【问题标题】:How to handle images sent by a mobile device?如何处理移动设备发送的图像?
【发布时间】:2011-05-05 06:51:30
【问题描述】:

我的一个同行正在开发一个 iPhone 应用程序,它允许用户通过我的 API 在我的网站上发布图像。我正在构建将接受和处理图像的 API 部分。

移动开发者正在发送这样的标头:

Content-Disposition: form-data; name="photo_1"; filename="photo_1.jpg"
    Content-Type: application/octet-stream

在查找发送的图像时,是否与普通 HTML 表单相同?我应该寻找 $_FILES 吗?

或者,使用 PHP,我如何找到他的图像?

【问题讨论】:

  • 查看$HTTP_RAW_POST_DATA的内容

标签: php image file-upload mobile


【解决方案1】:

似乎不是通过表单发送的,即<form enctype=multipart/form-data"><input type="file">,因此不会填充$_FILES 数组。

您可能需要阅读:

$HTTP_RAW_POST_DATA

或者做:

$rawPost = file_get_contents("php://input");

来自manual

php://input 允许你读取原始数据 来自请求正文的数据。的情况下 POST 请求,最好是 $HTTP_RAW_POST_DATA 因为它没有 依赖于特殊的 php.ini 指令。 此外,对于那些情况 $HTTP_RAW_POST_DATA 未填充 默认情况下,它可能更少 内存密集型替代方案 激活 always_populate_raw_post_data。 php://input 不适用于 enctype="multipart/form-data"。

欲了解更多信息,请查看:

http://php.net/manual/en/wrappers.php.php

http://php.net/manual/en/reserved.variables.httprawpostdata.php

【讨论】:

  • urldecode?我记得如果客户端发送内容类型为 application/octet-stream 的 POST,那么 POSTDATA 是原始字节,在这种情况下是图像,您可以按原样存储它,无需对其进行 urldecode...跨度>
  • 我实际上是在问。如果你记得和我不一样,也许你是对的...... PS:+1
【解决方案2】:

我想 iOS 在 HTTP 请求的 POSTDATA 部分中将整个文件作为单个数据块发送。您可以检索整个 POSTDATA(未解析):

<?php
$postdata = file_get_contents("php://input");
?> 

$_FILES 用于以正确的 HTML 格式读取使用enctype="multipart/form-data" 发送的文件。 iOS 可能正在发送一个普通的旧 POST,其中只包含代表文件的一堆字节。

如果这解决了,请告诉我!

【讨论】:

    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2021-03-31
      • 2013-06-22
      相关资源
      最近更新 更多