Как переслать multipart / form-data тело запроса с использованием PHP-прокси - PullRequest
3 голосов
/ 13 декабря 2011

Я хочу использовать php-прокси для решения проблемы междоменных доменов во время загрузки файла.В скрипте я использовал php curl для пересылки запроса и ответа, но я не знаю, как переслать тело запроса на сервер, когда тело запроса является multipart / format-data. file_get_contents ('php: // input') будет нулевым, если заголовок Content-Type равен "multipart / form-data".И при использовании curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ _POST) , Content-Disposition в теле запроса может быть отправлен, в то время как реальные данные файла не могут.

Моё тело запросакак это:

------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#...
.
.
.

1 Ответ

0 голосов
/ 20 декабря 2011

В идеале вы хотите сохранить загруженный файл локально, использовать функцию FTP curl для загрузки файла с сервера сценариев на сервер хранения, а затем удалить кэшированный файл на сервере сценариев.

Если это невозможно, отправьте запрос скручивания скрипту на удаленном файловом сервере, который должен загрузить файл с исходного сервера на себя.

Это может быть не так быстро, как отправка выгруженных файлов непосредственно на удаленный файловый сервер, но это по сути то же самое, за исключением того, что вы кэшируете файл локально, пока он загружается на удаленный сервер. В любом случае это может быть лучше, потому что загруженные данные не будут храниться в оперативной памяти вашего сервера в течение всей операции, что могло бы привести к проблемам с нехваткой памяти при одновременной загрузке большого количества файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...