PHP中的多部分PUT(数据和文件)

时间:2018-06-07 07:08:53

标签: php http

我的任务是为现有的移动应用构建API。 App正在同一个PUT请求中发送多部分数据和文件。例如,有/ api / employee / personal-info PUT端点(注意URI中没有ID),这是一个多部分 - JSON数据和2个图像。

PHP没有对PUT的本机支持,它不能很好地将所有内容放在$ _FILES和$ _POST中,所以我必须手动解码输入。

我首先要做file_get_contents("php://input"),这会给我原始数据。我必须使用正则表达式来提取边界字符串,然后我需要使用该边界(再次使用正则表达式)将输入拆分为块,然后通过查看每个块上的Content-Disposition来确定块是JSON还是文件。块。如果是文件,我必须重新编写文件名和扩展名,并手动填充$ _FILES数组。

Json bloks有这些标题(在正文中,就在实际数据之前)

Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=model

和文件块只有这个:

Content-Disposition: form-data; name=file; filename=IMG_20180208_1.jpg; filename*=utf-8’’IMG_20180208_1.jpg

因此整个输入的Content-Disposition是multipart / form-data,但是每个块都有自己的头,这取决于它是文件还是JSON数据。

这真的是在PHP中实现它的唯一方法吗? 在PHP方面,PUT端点通常不应该是多部分吗? 我错过了什么吗?

0 个答案:

没有答案