2009-12-08 60 views
0

我基本上正在與第三方API flash文件進行交互,以向我的服務器發送HTTP POST請求。從Flash POST請求中讀取RAW數據(圖像)

我知道我在某種程度上是正確的道路,因爲它需要一個crossdomain.xml文件,並且在添加該部分之前POST變量中沒有任何內容出現,但是由於我添加了該文件,因此設置了4個變量,這些POST變量由應用程序發送給我關於文件的基本信息..但我實際上需要讀取RAW POST數據以實際保存Flash發送的圖像。

我知道有3種方式...

  1. $GLOBALS['HTTP_RAW_POST_DATA']
  2. $HTTP_RAW_POST_DATA which is probably the same as the first
  3. file_get_contents('php://input')

無論出於何種原因,無論這些 「工作」 的。通過「工作」我的意思是他們沒有被設置,當我傾倒他們我什麼也沒有得到。

難道是我需要設置的php.ini中的一個設置,或者Flash應用程序確實沒有發送實際圖像?我認爲它做的是正確的,因爲它是一個半流行的API,並且它被其他一些網站使用,所以我很確定它是正確的。

而且它們也不需要任何類型的API密鑰。

回答

1

您需要在php.ini中設置always_populate_raw_post_data=1才能使用HTTP_RAW_POST_DATAlook here)。另外,請確保您將upload_max_filesize設置爲足夠大的文件值。

但是,如果POST數據被作爲multipart/form-data,發送文件時,它通常用於發送HTTP_RAW_POST_DATA不會有任何效果。

除非您以非標準方式發送文件,否則您確實應該使用$_FILES來檢索上傳文件。 PHP會自動將文件上傳保存到臨時位置,並將該位置置於$_FILES變量中。您可以使用move_uploaded_file函數將其移動到您想要的位置。例如:

$place_to_put_the_file = "/my_directory/image.jpg"; 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
echo "File is valid, and was successfully uploaded.\n"; 
} else { 
echo "Possible file upload attack!\n"; 
} 
+0

'$ _FILES'在我試過時是空白的,也許我會在確認'php.ini'設置後再次嘗試所有的測試。謝謝。 – 2009-12-08 03:16:25

+0

他要求的Flash不是常規的形式,它用於將Flash製作的圖像的快照發送到PHP,因此他需要首先收集該圖像,並且不能直接使用$ _FILES,@meder:似乎您沒有獲取來自第三方API的圖像如此仔細研究,然後需要編輯您的php.ini以接收HTTP_RAW_POST_DATA – Hafiz 2011-05-29 15:21:02