2011-05-04 18 views
2

我的同行正在開發一款iPhone應用程序,該應用程序將允許用戶通過我的API在我的網站上發佈圖像。我正在構建將接受和處理圖像的API的一部分。如何處理移動設備發送的圖像?

移動顯影劑發送報頭像這樣:

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

當尋找發送的圖像,是用同樣的方法,與普通的HTML表格?我應該尋找$ _FILES嗎?

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

+0

檢查'$ HTTP_RAW_POST_DATA' – 2011-05-04 22:30:39

回答

2

不會顯示它是通過表單發送的,即<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://輸入不適用於 enctype =「multipart/form-data」。

欲瞭解更多信息,請訪問:

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

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

+0

urldecode的內容是什麼?我記得如果客戶端發送內容類型爲application/octet-stream的POST,那麼POSTDATA是原始字節,在這種情況下是一個圖像,並且您將它存儲爲原樣,不需要urldecode它... – gd1 2011-05-04 22:37:15

+0

@賈科莫:對。我編輯過。 – webbiedave 2011-05-04 22:38:28

+0

我其實在問。如果你記得與我不同,也許你是對的...... PS:+1 – gd1 2011-05-04 22:38:54

1

我想iOS會發送整個文件作爲HTTP請求的POSTDATA部分中的單個數據塊。您可以檢索整個POSTDATA(不解析):

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

$_FILES是指用於讀取正確的HTML形式enctype="multipart/form-data"發送的文件。 iOS可能會發送一個簡單的舊POST,其中包含一堆代表該文件的字節。

告訴我,如果解決了!