发送mp4upload Curl的mulipart / form-data请求

时间:2017-12-30 13:10:54

标签: curl multipartform-data

我正在寻找一种方法来使用curl将位于test.mp4的视频(C:\admin\videos\)上传到MP4UPLOAD服务器。当我手动提交上传(使用打开文件对话框)时,以下标题会处理上传(由于隐私原因,某些值会发生变化):

#(2)
#General
Request URL:https://www3.mp4upload.com/cgi-bin/upload.cgi?upload_type=file
Referrer Policy:no-referrer-when-downgrade

#Request Headers
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryUYmnnrteTBA8i9Ps
Origin:https://www.mp4upload.com
Referer:https://www.mp4upload.com/?op=upload
User-Agent:Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36

#Query String Parameters
upload_type=file

#Request Payload
------WebKitFormBoundaryUYmnnrteTBA8i9Ps
Content-Disposition: form-data; name="sess_id"

12345abcde
------WebKitFormBoundaryUYmnnrteTBA8i9Ps
Content-Disposition: form-data; name="utype"

reg
------WebKitFormBoundaryUYmnnrteTBA8i9Ps
Content-Disposition: form-data; name="file_descr"


------WebKitFormBoundaryUYmnnrteTBA8i9Ps
Content-Disposition: form-data; name="file_public"

1
------WebKitFormBoundaryUYmnnrteTBA8i9Ps
Content-Disposition: form-data; name="link_rcpt"


------WebKitFormBoundaryUYmnnrteTBA8i9Ps
Content-Disposition: form-data; name="link_pass"


------WebKitFormBoundaryUYmnnrteTBA8i9Ps
Content-Disposition: form-data; name="to_folder"


------WebKitFormBoundaryUYmnnrteTBA8i9Ps
Content-Disposition: form-data; name="file_0"; filename="test.mp4"
Content-Type: video/mp4


------WebKitFormBoundaryUYmnnrteTBA8i9Ps--

那么如何使用curl / php使用上面给出的标题进行这样的上传请求(假设它可能)?

编辑1

因此使用chrome,我检索了以下卷曲线。

curl -k 'https://www13.mp4upload.com/cgi-bin/upload.cgi?upload_type=file' -H 'Referer: https://www.mp4upload.com/?op=upload' -H 'Origin: https://www.mp4upload.com' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36' -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykXmBSfC4cYG13IWT' --data-binary $'------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="sess_id"\r\n\r\n12345abcde\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="utype"\r\n\r\nreg\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="file_descr"\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="file_public"\r\n\r\n1\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="link_rcpt"\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="link_pass"\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="to_folder"\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="file_0"; filename="test.mp4"\r\nContent-Type: video/mp4\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT--\r\n' --compressed

现在我注意到每次提交新请求时WebKitFormBoundary处的随机字符串都会发生变化。但随机字符串背后是否有任何意义,或者我可以自己创建一个随机字符串? 第二件事是,我似乎无法找到test.mp4文件来自目录C:\admin\videos\。我该如何指定我要从该目录上传文件?

编辑2

所以我找到了另一种使用-F发布表单数据的方法。这样我就可以将视频上传到我自己的帐户(使用sess_id)。

curl -X POST -F "sess_id=1234abcde" -F "file_0=@C:\admin\videos\test.mp4;Type=video/mp4" -k https://www13.mp4upload.com/cgi-bin/upload.cgi?upload_type=file

我认为这是我做这件事最简单的方法,所以我就把它留在这里。

1 个答案:

答案 0 :(得分:0)

使用以下方法解决:

curl -X POST -F "sess_id=1234abcde" -F "file_0=@C:\admin\videos\test.mp4;Type=video/mp4" -k https://www13.mp4upload.com/cgi-bin/upload.cgi?upload_type=file