首頁 >後端開發 >php教程 >http - PHP PUT 方式傳文件的話,如何取得文件內容呢 ?

http - PHP PUT 方式傳文件的話,如何取得文件內容呢 ?

WBOY
WBOY原創
2016-10-11 14:23:321123瀏覽

最近因為在做前後端分離,後端PHP所有Api都使用RESTFul風格。

但是在使用PUT上傳文件的時候,發現$_FILES沒有文件資訊(可能沒有上傳臨時文件,待驗證),使用POST是可以的,並且PUT標準輸入流標準輸入流

過來的數據,讀出來是下面這種格式(上面我猜沒有上傳臨時文件,是因為看標準輸入流裡面存文件資訊),需要另外解析。

<code>#获取到的输入流内容

------WebKitFormBoundarybzEhWNCqbo9qKZBX
Content-Disposition: form-data; name="upload"; filename="一些不错的职位.md"
Content-Type: text/markdown

xxxx
xxxx
xxxx

------WebKitFormBoundarybzEhWNCqbo9qKZBX--</code>
目前我的思路是兩個:
  1. 如果上傳

    臨時檔案(這個正在測試...): 如果上傳了,可以讀取臨時檔案。
  2. 如果不上傳臨時檔案:試著解析這串form-data傳過來的參數,但我不知道這種格式php

    有沒有對應方法來解析。

順帶吐槽下,RESTFul用起來常常會有問題:

  1. 在跨域的時候,普通的form表單(GET, POST)沒問題,但是使用PUT,DELETE的話,需要設定跨域頭。

    PS:不明白,為什麼需要?
  2. MDN HTTP Method文件竟然沒有PUTDELETE

    的詳細介紹...
  3. PHP取得PUTDELETE需要到file_get_contents('php://input');取得參數訊息,沒有類似$_PUT,_DELETE

    _DELETE
  4. _DELETE
_DELETE

_DELETE

_DELETE

_DELETE_DELETE_DELETE

============= [ 22:01 ] =================== stackoverflow逛了下,發現不少碰到相同問題的,暫時沒看到比較好的解決方案。 補充下,這篇文章jquery ajax put file, php save file,部落客和我碰到了一樣的問題,不過他是透過用正規來解析處理資料的。 我在想,有沒有比較好的方案,能夠模仿PHP處理POST請求一樣,把

form-data

串,解析出來,普通參數,存到

$_PUT

(

$_POST

) , 文件傳到臨時目錄,然後返回文件資訊到$_FILES. ============ [ 10-10 10:16 ] ===================

這片博文如何使用multipart/form-data格式上傳文件,有講到form-data的格式。

目前先自己簡單寫一個解析

form-datacomposer元件。

回覆內容: 最近因為在做前後端分離,後端PHP所有Api都使用RESTFul風格。 但是在使用PUT上傳文件的時候,發現

$_FILES

沒有文件資訊(可能沒有上傳臨時文件,待驗證),使用

POST
    是可以的,並且
  1. PUT

    標準輸入流標準輸入流

    過來的數據,讀出來是下面這種格式(上面我猜沒有上傳臨時文件,是因為看標準輸入流裡面存文件資訊),需要另外解析。
  2. <code>#获取到的输入流内容
    
    ------WebKitFormBoundarybzEhWNCqbo9qKZBX
    Content-Disposition: form-data; name="upload"; filename="一些不错的职位.md"
    Content-Type: text/markdown
    
    xxxx
    xxxx
    xxxx
    
    ------WebKitFormBoundarybzEhWNCqbo9qKZBX--</code>
  3. 目前我的思路是兩個:

    如果上傳臨時檔案(這個正在測試...): 如果上傳了,可以讀取臨時檔案。

如果

不上傳

臨時檔案:嘗試解析這串
    form-data
  1. 傳過來的參數,但我不知道這種格式

    php
    有沒有對應方法來解析。

  2. 順帶吐槽下,RESTFul用起來常常會有問題: 在跨域的時候,普通的form表單(GET, POST)沒問題,但是使用PUT,DELETE的話,需要設定跨域頭。

    PS:不明白,為什麼需要?
  3. MDN HTTP Method文件竟然沒有PUTDELETE的詳細介紹... PHP取得PUT

  4. DELETE
需要到

file_get_contents('php://input');

取得參數訊息,沒有類似

$_PUT,_DELETE

_DELETE

_DELETE

_DELETE

_DELETE_DELETE_DELETE_DELETE_DELETE ============= [ 22:01 ] =================== stackoverflow逛了下,發現不少碰到相同問題的,暫時沒看到比較好的解決方案。

🎜補充下,這篇文章jquery ajax put file, php save file,部落客和我碰到了一樣的問題,不過他是透過用正規來解析處理資料的。 🎜 🎜我在想,有沒有比較好的方案,能夠模仿🎜PHP🎜處理🎜POST🎜請求一樣,把🎜form-data🎜串,解析出來,普通參數,存到🎜$_PUT🎜(🎜$_POST🎜) , 文件傳到臨時目錄,然後返回文件資訊到🎜$_FILES🎜.🎜

============ [ 10-10 10:16 ] ===================

這片博文如何使用multipart/form-data格式上傳文件,有講到form-data的格式。

目前先自己簡單寫一個解析form-datacomposer元件。

PHP的全域變數$_FILES只能取得post方式上傳的文件,若你要使用put 來上傳文件,你必須自己處理該stream

手機端來說,目前的主流是 get+post+json

4,標準的form data上傳格式

php put需要單獨解析,另put一般用於接受json格式的資料

謝謝回答,另外,問題重新編輯了下, :)

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn