【发布时间】:2022-01-22 13:51:18
【问题描述】:
我似乎找不到这个问题的真正答案,所以我开始了:
如何在 PHP 中解析 multipart/form-data 格式的原始 HTTP 请求数据?我知道如果格式正确,原始 POST 会自动解析,但我所指的数据来自 PUT 请求,PHP 不会自动解析该请求。数据是多部分的,看起来像:
------------------------------b2449e94a11c
Content-Disposition: form-data; name="user_id"
3
------------------------------b2449e94a11c
Content-Disposition: form-data; name="post_id"
5
------------------------------b2449e94a11c
Content-Disposition: form-data; name="image"; filename="/tmp/current_file"
Content-Type: application/octet-stream
�����JFIF���������... a bunch of binary data
我正在使用 libcurl 发送数据(伪代码):
curl_setopt_array(
CURLOPT_POSTFIELDS => array(
'user_id' => 3,
'post_id' => 5,
'image' => '@/tmp/current_file'),
CURLOPT_CUSTOMREQUEST => 'PUT'
);
如果我删除 CURLOPT_CUSTOMREQUEST 位,请求将在服务器上作为 POST 处理,一切都被解析得很好。
有没有办法手动调用 PHP 的 HTTP 数据解析器或其他一些不错的方法? 是的,我必须将请求作为 PUT 发送:)
【问题讨论】:
-
看看这个问题的python版本以获得一些想法:How do I deal with the uploaded file data manually?。基本上你只需要拆分二进制数据,重新组合它们并重建原始文件。
-
解析简单的PDF表单,试试stackoverflow.com/questions/46515906/…