我想在上傳文件時使用php代理來解決跨域問題。 在我使用php curl轉發請求和響應的腳本中,但是當請求主體是multipart/format-data時,我不知道如何將請求主體轉發到服務器。 當Content-Type標頭爲「multipart/form-data」時,file_get_contents('php:// input')將爲空。 當使用curl_setopt($ ch,CURLOPT_POSTFIELDS,$ _POST)時,可以發送請求正文中的Content-Disposition,而文件的真實數據不能。如何使用php代理轉發請求的multipart/form-data正文
我的請求體是這樣的:
------WebKitFormBoundaryd0tvwIvevPV4VTlP
Content-Disposition: form-data; name="name"
nbzdds.mp3
------WebKitFormBoundaryd0tvwIvevPV4VTlP
Content-Disposition: form-data; name="chunk"
15
------WebKitFormBoundaryd0tvwIvevPV4VTlP
Content-Disposition: form-data; name="chunks"
44
497161
------WebKitFormBoundaryd0tvwIvevPV4VTlP
Content-Disposition: form-data; name="file"; filename="blob"
Content-Type: application/octet-stream
��v\;"S�;-�mG\u#...
.
.
.
如果這是您的選擇,那麼在本地上傳文件到與本腳本相同的服務器上更容易,然後用本地服務器上傳文件的URI捲曲遠程服務器,然後遠程服務器可以下載該文件。 – wyqydsyq
實際上,文件將由客戶端提供,使用html的'file'元素。你的意思是我應該先將文件緩存在我的腳本服務器上? – Hyden
是的,不是讓上傳腳本嘗試將其上傳到遠程服務器,而是讓腳本在本地存儲文件,然後它應該觸發存儲服務器上的下載腳本。 您也可以在本地存儲文件,然後使用curl的FTP功能將文件從腳本服務器上傳到存儲服務器,這種方法是理想的,因爲您可以讓腳本在刪除文件的本地緩存副本後已發送到存儲服務器。 – wyqydsyq