如何使用php代理转发多部分/表单-数据请求体


How to forward multipart/form-data body of request using a php proxy

我想使用php代理来解决上传文件时的跨域问题。在脚本中,我使用php curl来转发请求和响应,但我不知道如何将请求体转发到服务器,当请求体是multipart/format-data。file_get_contents('php://input')当Content-Type头文件为"multipart/form-data"时将为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#...
.
.
.

理想情况下,您希望将上传的文件存储在本地,使用curl的FTP函数将文件从脚本服务器上传到存储服务器,然后删除脚本服务器上的缓存文件。

如果这是不可能的,发送curl请求到远程文件服务器上的脚本,它应该从原始服务器下载文件到自己。

它可能不如直接将上传的文件发送到远程文件服务器那么快,但本质上是一样的,除了你在上传文件到远程服务器时在本地缓存文件。这可能会更好,因为上传的数据不会在整个操作中存储在服务器的ram中,如果同时上传大量文件,可能会导致内存不足的问题。