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

标签 php ios iphone file file-upload

我用 PHP 开发了一个 REST API,它从 iPhone 应用程序获取 POST 请求数据。

我正在获取 JSON 格式的 POST 请求数据。我解码它并在 PHP 中使用它。到这里为止一切正常。

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

如果文件是使用 enctype="multipart/form-data"method=POST 从 HTML 表单上传的,我会在 $ 中获取上传文件的数据_FILES 数组。

最佳答案

你说:

If the file is uploaded from HTML form with enctype="multipart/form-data" and method=POST I get data of uploaded file in $_FILES array.

在 iOS 中,您可以创建一个 multipart/form-data 请求(请参阅这些 Stack Overflow 答案,分别在 Objective-CSwift 中查看这是如何完成的)。如果这样做,则无需更改 PHP 代码,并且可以通过 PHP 的 $_FILES 变量访问上传的文件,就像从 HTML 表单访问一样。

但是之前你说:

I'm getting this POST request data in JSON format.

上面,我指出您可以从 iOS 代码创建一个 Content-Typemultipart/form-data 的请求,这将使文件可用通过 PHP 的 $_FILES 变量。但这意味着请求不会是 JSON。

如果您希望您的 Web 服务仅使用 JSON,那么 iOS 代码将改为创建一个 Content-Typeapplication/json 的请求。该请求的主体不会是多部分请求,而只是普通的 JSON。而且,如果您这样做,则 PHP 代码无法使用 $_FILES,而是 json_decode 响应并从中解析数据。更糟糕的是,您不能在 JSON 元素值中包含任意二进制数据,因此 iOS 代码必须先将二进制数据转换为文本,然后再在创建请求时将其放入 JSON(例如通过 base-64),然后是 PHP 代码将获取 base 64 编码值,然后在保存之前对其进行解码。

坦率地说,这需要做更多的工作(由于 base-64 编码过程,请求将增加 33%),所以我倾向于让文件上传使用 multipart/form-data 前面概述了而不是创建基于 JSON 的文件上传过程。

关于php - 如何在 PHP 中访问/获取通过 iPhone 应用程序上传的文件的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28534933/

相关文章:

iphone - 网络推送通知

iphone - 使用javascript从iOS Corona平台中的谷歌地图获取当前位置

javascript - noUiSlider 在页面加载时设置值

php - jQuery BlockUI 脚本上的重复区域无法工作

php - 使MySQL自增id(re)从1开始

ios - Xcode 4.5 - CopyPNGFile 仍然存在。需要新的想法

ios - UIScrollView _delegateScrollViewAnimationEnded 崩溃

php - 我可以有条件地更改 Wordpress 中 the_content() 返回的内容吗?

ios - 有没有适合iOS开发的开源计算器键盘?

ios - 如何在ios中使用pjsip进行通话录音?