2017-12-30 59 views
0

curlを使用してビデオをアップロードする方法(test.mp4C:\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 

私はこれは私がそれを行うための最も簡単な方法ですので、私はこれでそれを残して決定しました。

+0

(http://docs.guzzlephp.org/en/stable/psr7 .html?highlight = file)。確かに可能です。最初のヘッダーはプリフライト要求と呼ばれます。データは保持されませんが、元の要求に200 OK暫定を返す必要があります。 – Gegenwind

+0

最初のヘッダーを明確にしてくれてありがとう。もう一つは、カールを直接使ってみようと思っています。なぜなら、ライブラリを使ってこのようにすることから学ぶと思うからです。 –

答えて

0

を使用して解決以下:あなたはがつがつ食うライブラリを使用しての代わりに、直接カールを扱う手間の多くを回避することができ、私の経験から

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 
関連する問題