如何使用curl-php通过请求负载上传文件


how to upload file via request payload using curl php

我无法访问后端服务器,我通过网络分析了API。我想用那个API上传文件。我观察到,在对那个API的后请求中并没有参数。我观察到网络中的请求有效负载。

响应标头

缓存控制:无缓存连接:保持活动内容长度:135内容类型:text/html;charset=utf-8日期:2016年8月6日星期六14:32:00 GMT地点:http://myURL服务器:nginx/1.2.3设置Cookie:_mystore2_session=BAh7CekiD3Nlc3Nb25faWQGogZFRkkiJTAxYzJhntBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNTTVXdnEzodqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkki GXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlV zZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARg%3D%-63863b861eb33b48b3137d187b2113fe90a930f3;路径=/;HttpOnly状态:已找到302X-Rack-Cache:无效,通过X-请求-Id:3c843dc4dcb55bcf5f15e139264fa9beX-Runtime:0.884597X-UA-兼容:IE=边缘,铬=1

请求头

接受:text/html,application/xhtml+xml,application/xml;q=0.9,图像/web,/;q=0.8接受编码:gzip,deflate接受语言:en-US,en;q=0.8缓存控制:无缓存连接:保持活动内容长度:642389内容类型:多部分/表单数据;boundary=----WebKitFormBoundary2rjUr5SSxx3BXjGnCookie:s=;lat_lon=33.69%2673.0551__utmt=1_mystore2_session=BAh7UkiD3Nlc3Npb25faWQGogZFRkkiJTAxYzJhntBkYmY3ZTRkYTBhYm4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNTTVXdnEzodqWkc0cXFsN1RiTDB4d3o44WWo2aUE9BjsARkki GXdhcmRlbi51c2VyLnVzZXIua2BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGOwWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARkkiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQOgpAaGFzaHsHOg5hbmFseXRpY3NUOgxzdWNjZXNzVDoMQGNsb3NlZEY6DUBmbGFzaGVzewc7InsIOg1jYXRlZ29yeUkiDENvbnRhY3QGOwBGOgthY3Rpb25JIhFsZWFkX2NhcHR1cmUGOwBGogpsYWJlbEkiFNlbGwgTW90b3JjeWNsZQY7AEYW70KiLFVwbG9hZCBpbWFnZXMgdG8gYWwN0aXHdGUgeW91ciBsaXN0aW5nIQY7AEy6Cub3cw-c3c1b5 d437fd04a80dc888822811d2d4d354ae29__utma=129180296.2104761345.1470477279.147048.8311470491357.3__utmb=129180296.10.9.1470493699533__utmc=129180296__utmz=129180296.1470477279.1.1。utmcsr=(直接(| utmccn=(直接的(| utmcmd=(无(主持人:www.usedmotorcycles.net来源:myURLPragma:没有缓存引用人:myURL升级不安全请求:1用户代理:Mozilla/5.0(Windows NT 6.2;WOW64(AppleWebKit/537.36(KHTML,类似Gecko(Chrome/51.02704.03 Safari/537.36

请求有效载荷

------WebKitFormBoundary2rjUr5SSxx3BXjGn内容处置:表单数据;name="utf8">

✓------WebKitFormBoundary2rjUr5SSxx3BXjGn内容处置:表单数据;name="authenticity_token">

ptXIz6vJJqveSBM5Wvq387jZG4qql7TbL0xwz8Yj6iA=------WebKitFormBoundary2rjUr5SSxx3BXjGn内容处置:表单数据;name="图像[附件]";filename="屏幕截图(156(.png"内容类型:image/png

如何使用curl有效负载提交我的文件?

引号:I have observed that there are no parameters in post request to that API错了,有一堆参数,举几个例子:Cookie:slat_lon__utmt_mystore2_session__utma和更多。

此外,这并不是您向我们展示的完整请求标头。首先,它缺少请求类型(尽管可能是POST请求(无论如何,用curl来复制它,它就像:

<?php 
$ch=curl_init();
curl_setopt_array($ch,array(
CURLOPT_URL=>'???',
CURLOPT_ENCODING=>'',
CURLOPT_POST=>true,
CURLOPT_POSTFIELDS=>array(
'Cookie:s'=>'',
'lat_lon'=>'33.69&73.0551',
'_mystore2_session'=>'BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARkkiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsHOg5hbmFseXRpY3NUOgxzdWNjZXNzVDoMQGNsb3NlZEY6DUBmbGFzaGVzewc7CnsIOg1jYXRlZ29yeUkiDENvbnRhY3QGOwBGOgthY3Rpb25JIhFsZWFkX2NhcHR1cmUGOwBGOgpsYWJlbEkiFFNlbGwgTW90b3JjeWNsZQY7AEY7C0kiLFVwbG9hZCBpbWFnZXMgdG8gYWN0aXZhdGUgeW91ciBsaXN0aW5nIQY7AEY6CUBub3cw--c3c1b5d437fd04a80dc888822811d2d4d354ae29',
'image'=>array(new CURLFile('/path/to/file.png','image/png','Screenshot (156).png'))
//and more post data here.
),
CURLOPT_HTTPHEADER=>array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
'Accept-Language: en-US,en;q=0.8',
'Cache-Control: no-cache',
'Pragma: no-cache',
'Origin: myURL',
//and more headers here
),
CURLOPT_USERAGENT=>'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
));
curl_exec($ch);

注意:这不是完整的代码,它缺少了CURLOPT_POSTFIELDCURLOPT_HTTPHEADER的一堆数据,但这应该会让您启动