PHP


一般的文件上传是通过html表单进行的,通过CURL可以不经过浏览器,直接在服务器端模拟进行表单提交,完成POST数据、文件上传等功能。需要被上传的文件需要在文件名前加上“@”以示区分,并且,文件名需要是完整路径。

以下php函数来模拟html表单的提交数据:

function uploadByCURL($post_data,$post_url){
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $post_url);
	curl_setopt($curl, CURLOPT_POST, 1 );
	curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl,CURLOPT_USERAGENT,"Mozilla/4.0");
	$result = curl_exec($curl);
	$error = curl_error($curl);
	return $error ? $error : $result;
}

函数的使用:

$url = "http://127.0.0.1/app.php";
$data = array(
	"username" => $username,
	"password"  => $password,
	"file1"  => "@".realpath("photo1.jpg"),
	"file2"  => "@".realpath("file2.xml")
);
print_r(uploadByCURL($data,$url));

通过发送http实现,假设$filesize代表文件大小,$filename代表文件名,文件内容为filecontent

header(“Content-type: application/octet-stream”);   //文件类型的mimetype
header(“Accept-Ranges: bytes”);          //如果不需要显示文件尺寸可省略
header(“Accept-Length: “.
$filesize);     //同上
header(“Content-Disposition: attachment; filename=” . $filename);
echo $filecontent;

这样就可以隐藏文件的实际路径,比如保存在数据库中的文件等。

Zend Framework是一套高质量的开源framework,用来面向Web应用和WebService的开发.

基于PHP的精神,Zend Framework实现了易于使用和功能强大的特点,提供了先进、强壮和安全的网站开发解决方案。

ZF需要PHP5.0.4以上的运行环境,所以这里很好的和PEAR进行了区分,但是从长远来说,和PEAR还是很重叠,如果要分析定位,可能PEAR会面向一般的应用,所以吸引大量的开发,由于发行很早,代码比较老,跟不上时代的潮流:D;ZF则更注重于强壮安全的应用,属于官方的一个产品,充分使用了PHP5的新特性,提高的代码质量。

关于PEAR和ZF 的讨论