2014-02-24 20 views
1

我試圖從PUT請求中檢索數據。爲什麼PUT請求需要x-www-form-urlencoded並且不能與表單數據一起使用?

目前,我有它與下面的代碼工作:

parse_str(file_get_contents("php://input"), $parsedArray); 

但這似乎只能用X WWW的URL編碼,而不是標準的表單數據的支持,有一個工作圍繞我錯過了?

如果它的任何除了我有以下的標題上的所有請求我的API集:

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Methods: *"); 
header("Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE"); 
header("Access-Control-Allow-Headers: Authorization"); 
header("Content-Type: application/json"); 

如果需要更多的信息,我可以提供它,不要太知道還有什麼可以實現這一點?

乾杯提前, 傑米

回答

1

這是不特定於PUT - POST遭受了同樣的問題。

當PHP解析multipart/form-data請求時,php://input不再可用。

這給我以前造成了很多問題!

不幸的是,唯一的解決方法是將文件內容作爲表單數據的一部分提交,可能是base64編碼的(因此它不必urlencode所有的二進制數據)。這是一個麻煩,但遺憾的是這是處理這一特殊情況的唯一途徑...

+1

我明白了。我想我可能會錯誤地使用'php:// input'。我不想傳遞一個文件,只需要將表單數據導入到我的PHP腳本中以獲得PUT。它不會處理文件有什麼不同,而只是參數/字段? –

+1

@JamieStreet如果你不處理文件,你通常不應該在'application/x-www-form-urlencoded'上使用'multipart/form-data'(是的,我知道這已經有一段時間了,但仍然到目前爲止根本沒有答案) – Jasper

2

我發現了這一點,它提供了良好的額外的背景(有好奇的我自己): PUT vs POST

相關問題