我想在上传文件时使用php代理来解决跨域问题。 在脚本中我使用php curl来转发请求和响应,但是当请求主体是multipart / format-data时,我不知道如何将请求主体转发到服务器。 当Content-Type标头是" multipart / form-data"时, file_get_contents(' php:// input')将为null。 当使用 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#...
.
.
.
答案 0 :(得分:0)
理想情况下,您希望在本地存储上传的文件,使用curl的FTP功能将文件从脚本服务器上传到存储服务器,然后删除脚本服务器上的缓存文件。
如果无法做到这一点,请向远程文件服务器上的脚本发送curl请求,该脚本应将文件从原始服务器下载到自身。
它可能没有将上传的文件直接发送到远程文件服务器那么快,但它基本上是相同的,除了你在上传到远程服务器时在本地缓存文件。无论如何,这可能会更好,因为上传的数据不会存储在服务器的ram中用于整个操作,如果同时上传大量文件,这可能会导致内存不足。