curlを使用してビデオをアップロードする方法(test.mp4
はC:\admin\videos\
にあります)をMP4UPLOADサーバーに送信します。私は(オープンファイルダイアログを使用して)手動でアップロードを送信すると、次のヘッダーは、(いくつかの値があるため、プライバシー上の理由で変更されている)のアップロードを処理します。mp4uploadのmulipart/form-dataリクエストを送信するCurl
#(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を使って(可能であると仮定して)?だから、クロムを使用して
EDIT 1
、私は次のカールの行を取得しました。
今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
変更でランダムな文字列毎回新しい要求を提出することに最初に気づい。しかし、ランダムな文字列の後ろに意味がありますか、私はランダムな文字列を自分で作成できますか?
2番目のことは、test.mp4
ファイルがディレクトリC:\admin\videos\
からあるとは思われません。そのディレクトリからファイルをアップロードするように指定する方法を教えてください。
EDIT 2
だから私は-F
を使用してフォームデータをポストするための別の方法を見つけました。この方法で私は自分のアカウントにビデオをアップロードすることもできます(sess_id
を使用)。
curl -X POST -F "sess_id=1234abcde" -F "[email protected]:\admin\videos\test.mp4;Type=video/mp4" -k https://www13.mp4upload.com/cgi-bin/upload.cgi?upload_type=file
私はこれは私がそれを行うための最も簡単な方法ですので、私はこれでそれを残して決定しました。
(http://docs.guzzlephp.org/en/stable/psr7 .html?highlight = file)。確かに可能です。最初のヘッダーはプリフライト要求と呼ばれます。データは保持されませんが、元の要求に200 OK暫定を返す必要があります。 – Gegenwind
最初のヘッダーを明確にしてくれてありがとう。もう一つは、カールを直接使ってみようと思っています。なぜなら、ライブラリを使ってこのようにすることから学ぶと思うからです。 –