• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 文件上传,这段报文哪里错了呢

php 搞代码 3年前 (2022-01-25) 20次浏览 已收录 0个评论
文章目录[隐藏]

看了很多例子 没解决问题,大家帮我看看呢

返回的结果如下:

<code>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 </code>

代码:

<code class="lang-php"><?php//test100.jpg就在当前目录下function sock_post($url){        $boundary <strong>)本文来(源gaodai#ma#com搞@@代~&码*网2</strong><pre>搞代gaodaima码

= “———“.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.”
“; } fclose($fp);}$purl=”http://upload.qiniu.com&#8221;;echo “以下是POST方式的响应内容:
“; 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

回复内容:

看了很多例子 没解决问题,大家帮我看看呢

返回的结果如下:

<code>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 </code>

代码:

<code class="lang-php"><?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);?></code>

在这里生成的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

<code>$head.="Content-Length: ".strlen($data)."\r\n\r\n";</code>

注意 Content-Length: 后面需要有一个空格。

大神,你用这么多header干啥呢??完全看不懂代码、、


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 文件上传,这段报文哪里错了呢

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址