日期:2014-05-17  浏览次数:20450 次

PHP使用CURL上传文件
用curl上传文件的话很方便,什么header,post串都不用生成了,用fsockopen要写一堆
curl:
$file = array("upimg"=>"@E:/png.png");//文件路径,前面要加@,表明是文件上传.
$curl = curl_init("http://localhost/a.php");
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$file);
curl_exec($curl);

fsockopen
$uploadFile = file_get_contents("E:/png.png");
$boundary   = md5(time());

$postStr .="--".$boundary."\r\n";//边界开始,注意默认比header定义的boundary多两个'-'
$postStr .="Content-Disposition: form-data; name=\"upimg\"; filename=\"E:/png.png\"\r\n";
$postStr .="Content-Type: image/png\r\n\r\n";
$postStr .=$uploadFile."\r\n";
$postStr .="--".$boundary."\r\n";//边界结束
fwrite($fp,"POST /a.php HTTP/1.0\r\n");
fwrite($fp,"Content-Type: multipart/form-data; boundary=".$boundary."\r\n");
fwrite($fp,"Content-length:".strlen($postStr)."\r\n\r\n");
fwrite($fp,$postStr);
while (!feof($fp)){
     echo fgets($fp, 128);
}
fclose($fp);

print_r($_FILES);

1 楼 pz9042 2011-10-24  
我想问下,curl可以上传文件吗,依 你的代码,在指定url打印$_FILES,确实有信息,但,我在所谓的临时文件夹里根本没找到文件,更无法上传文件,楼主,希望你贴出主要的代码,你现在的代码,只不过是填写了信息,根本没有上传的代码