php 文件上传,这段报文哪里错了呢
看了很多例子 没解决问题,大家帮我看看呢
返回的结果如下:
HTTP/1.1 400 Bad Request
Date: Fri, 18 Jul 2014 18:15:46 GMT
Server: nginx/1.4.4
Content-Type: application/json
Content-Length: 36
Access-Control-Allow-Headers: X-File-Name, X-File-Type, X-File-Size
Access-Control-Allow-Methods: OPTIONS, HEAD, POST
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
X-Content-Type-Options: nosniff
X-Log: UP/400
X-Reqid: QkEAAC2bX1liE4IT
X-Via: 1.1 js41:3 (Cdn Cache Server V2.0)
Connection: close
代码:
<?php
//test100.jpg就在当前目录下
function sock_post($url){
$boundary = "---------".substr(md5(rand(0,32000)),0,10);
$content_file=file_get_contents('test100.jpg');
$token="XXXXXXX";
$key="chrisliu";
$file_name="test100.jpg";
$info=parse_url($url);
$fp=fsockopen($info["host"],80,$errno,$errstr,3);
$head="POST / HTTP/1.1\r\n";
$head.="Host: ".$info['host']."\r\n";
$head.="Content-type: multipart/form-data; boundary=".$boundary."\r\n";
$data="--".$boundary."\r\n";
$data.='Content-Disposition: form-data; name=\"token\"\r\n';
$data.=$token."\r\n";
$data.="--".$boundary."\r\n";
$data.='Content-Disposition: form-data; name="key"\r\n';
$data.=$key."\r\n";
$data.="--".$boundary."\r\n";
$data.='Content-Disposition: form-data; name="x:username"\r\n';
$data.="\r\n";
$data.="--".$boundary."\r\n";
$data.='Content-Disposition: form-data; name=\"file\"; filename=\"'.$file_name.'\"\r\n';
$data.="Content-Type: application/octet-stream\r\n";
$data.="Content-Transfer-Encoding: binary\r\n";
$data.=$content_file."\r\n";
$data.="--".$boundary."--\r\n";
$head.="Content-Length:".strlen($data)."\r\n\r\n";
$write=fputs($fp,$head.$data);//发出请求
while(!feof($fp)){
$line=fgets($fp);
echo $line."<br>";
}
fclose($fp);
}
$purl="http://upload.qiniu.com";
echo "以下是POST方式的响应内容:<br>";
sock_post($purl);
?>
在这里生成的token
http://jsfiddle.net/gh/get/extjs/4.2/icattlecoder/jsfiddle/tree/master/uptoken
在这里测试上传成功
http://jsfiddle.net/gh/get/library/pure/icattlecoder/jsfiddle/tree/master/formupload
killed
10 years, 4 months ago