如何在PHP中访问/获取通过iPhone应用上传的文件数据?

如何在PHP中访问/获取通过iPhone应用上传的文件数据?,php,ios,iphone,file,file-upload,Php,Ios,Iphone,File,File Upload,我已经用PHP开发了一个RESTAPI,它从iPhone应用程序获取请求后的数据 我正在获取JSON格式的POST请求数据。我将其解码并在PHP中使用。在这之前一切都很好 我的问题是关于通过iPhone应用程序上传文件的数据。如何在PHP中访问上传的文件数据 如果文件是使用enctype=“multipart/form data”和method=POST从HTML表单上载的,我会在$\u FILES数组中获取上载文件的数据。你说: 如果文件是使用enctype=“multipart/form d

我已经用PHP开发了一个RESTAPI,它从iPhone应用程序获取请求后的数据

我正在获取JSON格式的POST请求数据。我将其解码并在PHP中使用。在这之前一切都很好

我的问题是关于通过iPhone应用程序上传文件的数据。如何在PHP中访问上传的文件数据

如果文件是使用
enctype=“multipart/form data”
method=POST
从HTML表单上载的,我会在
$\u FILES
数组中获取上载文件的数据。

你说:

如果文件是使用
enctype=“multipart/form data”
method=POST
从HTML表单上载的,我将在
$\u FILES
数组中获取上载文件的数据

在iOS中,您可以创建一个
多部分/表单数据
请求(请参阅这些堆栈溢出回答,分别了解如何在和中完成此操作)。如果这样做,则不需要对PHP代码进行任何更改,上传的文件将通过PHP的
$\u FILES
变量进行访问,与HTML表单中的文件完全相同

但早些时候你说:

我正在获取JSON格式的POST请求数据

在上面,我指出您可以从iOS代码中创建一个
Content Type
multipart/form data
的请求,该请求将通过PHP的
$\u FILES
变量使文件可用。但这意味着,请求将不是JSON

如果您只希望web服务使用JSON,那么iOS代码将创建一个内容类型为
application/JSON
的请求。该请求的主体不是多部分请求,而是纯JSON。如果您这样做了,那么PHP代码就不能使用
$\u文件
,而是
json\u解码响应并解析其中的数据。更糟糕的是,JSON元素值中不能包含任意二进制数据,因此在创建请求时(例如,通过base-64),iOS代码必须先将二进制数据转换为文本,然后再将其放入JSON,然后PHP代码将获取base 64编码的值,然后在保存之前对其进行解码


坦率地说,这是一项更大的工作(由于base-64编码过程,请求将增加33%。),因此,我倾向于让文件上载使用前面概述的
多部分/表单数据
,而不是创建基于JSON的文件上载过程。

@Rob:enctype实际上是一个HTML属性,在将文件上载到服务器时,在标记中是必需的。有关更多信息,请访问此链接:是的,我熟悉$\u文件数组的用法,但我的问题是,当使用iPhone/iOS上载文件时,我是否会在与使用HTML表单上载的文件相同的$\u文件数组中获取上载的文件数据?这是我的问题,如果文件是从iPhone上传的,我可以获得$_文件数据吗?或者有没有办法用PHP访问上传的文件数据?@Rob:首先,让我向你说明我是PHP开发人员,而不是iOS开发人员。因此,如何在iOS中发送多部分请求不是我的工作。iOS开发人员正在做这项工作。我唯一关心的是,PHP中的$_FILES数组是否与HTML中的相同?@Rob:感谢您的详细解释。如果你能以一种更恰当的方式将此作为一个答案,这将是对这个问题真正公正的回答。我会投票并接受它。