发送 mulipart/form-data 请求 mp4upload Curl

Send mulipart/form-data request for mp4upload Curl

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

#(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(假设可能)使用上面给出的 headers 发出这样的上传请求?

编辑 1

所以使用 chrome,我检索了以下 curl 行。

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

所以我找到了另一种方法 post 使用 -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

我确定这是最简单的方法,所以我就此打住。

使用以下方法解决:

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