【问题标题】:how to upload file via request payload using curl php如何使用 curl php 通过请求有效负载上传文件
【发布时间】:2016-08-06 15:14:08
【问题描述】:

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

响应头

缓存控制:无缓存 连接:保持活动 内容长度:135 内容类型:文本/html;字符集=utf-8 日期:2016 年 8 月 6 日星期六 14:32:00 GMT 地点:http://myURL 服务器:nginx/1.2.3 设置Cookie:_mystore2_session = BAh7CEkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARg%3D%3D - 63863b861eb33b48b3137d187b2113fe90a930f3;路径=/; HttpOnly 状态:302 找到 X-Rack-Cache:无效,通过 X 请求 ID:3c843dc4dcb55bcf5f15e139264fa9be X-运行时:0.884597 X-UA 兼容:IE=Edge,chrome=1

请求标头

接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 接受编码:gzip,放气 接受语言:en-US,en;q=0.8 缓存控制:无缓存 连接:保持活动 内容长度:642389 内容类型:multipart/form-data;边界=----WebKitFormBoundary2rjUr5SSxx3BXjGn 饼干:s=;纬度=33.69%2673.0551; __utmt=1; _mystore2_session = BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARkkiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsHOg5hbmFseXRpY3NUOgxzdWNjZXNzVDoMQGNsb3NlZEY6DUBmbGFzaGVzewc7CnsIOg1jYXRlZ29yeUkiDENvbnRhY3QGOwBGOgthY3Rpb25JIhFsZWFkX2NhcHR1cmUGOwBGOgpsYWJlbEkiFFNlbGwgTW90b3JjeWNsZQY7AEY7C0kiLFVwbG9hZCBpbWFnZXMgdG8gYWN0aXZhdGUgeW91ciBsaXN0aW5nIQY7AEY6CUBub3cw - c3c1b5d437fd04a80dc888822811d2d4d354ae29; __utma=129180296.2104761345.1470477279.1470488831.1470491357.3; __utmb=129180296.10.9.1470493699533; __utmc=129180296; __utmz=129180296.1470477279.1.1.utmcsr=(直接)|utmccn=(直接)|utmcmd=(无) 主办方:www.usedmotorcycles.net 来源:我的网址 杂注:无缓存 推荐人:我的网址 升级不安全请求:1 用户代理:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

请求负载

------WebKitFormBoundary2rjUr5SSxx3BXjGn 内容处置:表单数据;名称="utf8"

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

ptXIz6vJJqveSBM5Wvq387jZG4qql7TbL0xwz8Yj6iA= ------WebKitFormBoundary2rjUr5SSxx3BXjGn 内容处置:表单数据;名称="图片[附件]"; filename="截图 (156).png" 内容类型:image/png

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

【问题讨论】:

  • 我不知道为什么您希望我们在问题可能出在您的代码中时仅使用标头进行调试。 Check out the MVCE page 对您的问题有什么帮助
  • 我必须从标头中观察并请求有效负载,我应该发送什么参数?这是发布请求,我没有观察到表单参数
  • I have observed that there are no parameters in post request to that API 错误,有一堆参数,仅举几例:Cookie:slat_lon__utmt_mystore2_session__utma 等等

标签: php api curl request payload


【解决方案1】:

引用: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 的一堆数据,但这应该可以帮助您入门

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2013-02-18
    • 2019-05-29
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 2019-06-17
    相关资源
    最近更新 更多