在做一個相機拍照然後上傳的功能,php中使用php://input來取得內容。於是就了解下php://input了。
從官網資訊來看,php://input是一個只讀資訊流,當請求方式是post的,並且enctype不等於「multipart/form-data」時,可以使用php://input來取得原始請求的數據。
看一個簡單的例子。
客戶端就是一個表單,非常簡單。
<form action="" method="POST"> name: <input type="text" name="name" value="tom" /><br /> age:<input type="text" name="age" value="22" /><br /> <input type="submit" value="Submit" /> </form>
將表單提交到服務端,服務端使用file_get_contents獲取php://input內容
$content = file_get_contents("php://input"); echo $content; // 输出name=tom&age=22
官網關於php://input的說明中,反覆有提到 $HTTP_RAW_POST_DATA 這個變量,這個變數(php://input) 的內容是一樣的。如果要開啟這個變量,需要修改設定文件,找到always_populate_raw_post_data這個選項,設定為On,然後重新啟動web伺服器,就可以了。而使用php://input則不需要修改php設定檔。
在專案應用中,如相機拍照,上傳保存,就可以用到php://input。客戶端拍照後,把圖片流傳送到服務端,服務端使用 file_get_getcontents('php://input')就能取得到圖片流,然後把圖片流存到一個文件,這個文件就是圖片了。