突然想到了以前接觸過flash將圖片二進位流傳給php,靈機一動用$GLOBALS['HTTP_RAW_POST_DATA']取得到了。
於是就深入的查了一下,原來PHP預設只辨識application/x-www.form-urlencoded標準的資料型,因此,對型如text/xml 或soap 或application/octet-stream 之類的內容無法解析,如果用$_POST數組來接收就會失敗!故保留原型,交給$GLOBALS['HTTP_RAW_POST_DATA'] 來接收。
php的HTTP_RAW_POST_DATA
用Content-Type=text/xml 類型,提交一個xml文檔內容給了php server,要怎麼取得這個POST資料。
The RAW / uninterpreted HTTP POST information can be accessed with: $GLOBALS['HTTP_RAW_POST_DATA'] This is useful in cases where the post Content-Type is not something PHP under PHP預設只辨識application/x-www.form-urlencoded標準的資料型別,因此,對型如text/xml的內容無法解析為$_POST數組,故保留原型,交給$GLOBALS['HTTP_RAW_POST_DATA'] 來接收。
另外還有一項 php://input 也可以實作此這個功能
php://input 允許讀取 POST 的原始資料。和 $HTTP_RAW_POST_DATA 比起來,它給記憶體帶來的壓力較小,並且不需要任何特殊的 php.ini 設定。 php://input 不能用於 enctype="multipart/form-data"。
應用
a.htm
複製程式碼 程式碼如下:
複製代碼 代碼如下:
echo file_get_contents("php://input");?>