http - PHP PUT方式傳檔案的話,如何擷取檔案內容呢 ?

來源:互聯網
上載者:User

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

但是在使用PUT上傳檔案的時候,發現$_FILES沒有檔案資訊(可能沒有上傳臨時檔案,待驗證),使用POST是可以的,並且PUT從標準輸入資料流擷取過來的資料,讀取出來是下面這種格式(上面我猜測沒有上傳臨時檔案,是因為看標準輸入資料流裡面存著檔案資訊),需要另外解析。

#擷取到的輸入資料流內容------WebKitFormBoundarybzEhWNCqbo9qKZBXContent-Disposition: form-data; name="upload"; filename="一些不錯的職位.md"Content-Type: text/markdownxxxxxxxxxxxx------WebKitFormBoundarybzEhWNCqbo9qKZBX--

目前我的思路是兩個:

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

  2. 如果不上傳臨時檔案:嘗試解析這串form-data傳過來的參數,但我不知道這種格式php有沒有對應方法進行解析。

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

  1. 在跨域的時候,普通的form表單(GET, POST)沒問題,但是使用PUT,DELETE的話,需要設定跨域頭。
    PS:不明白,為什麼需要?

  2. MDN HTTP Method文檔竟然沒有PUT,DELETE的詳細介紹...

  3. PHP擷取PUT,DELETE需要到file_get_contents('php://input');擷取參數資訊,沒有類似$_PUT,$_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-data的composer組件。

回複內容:

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

但是在使用PUT上傳檔案的時候,發現$_FILES沒有檔案資訊(可能沒有上傳臨時檔案,待驗證),使用POST是可以的,並且PUT從標準輸入資料流擷取過來的資料,讀取出來是下面這種格式(上面我猜測沒有上傳臨時檔案,是因為看標準輸入資料流裡面存著檔案資訊),需要另外解析。

#擷取到的輸入資料流內容------WebKitFormBoundarybzEhWNCqbo9qKZBXContent-Disposition: form-data; name="upload"; filename="一些不錯的職位.md"Content-Type: text/markdownxxxxxxxxxxxx------WebKitFormBoundarybzEhWNCqbo9qKZBX--

目前我的思路是兩個:

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

  2. 如果不上傳臨時檔案:嘗試解析這串form-data傳過來的參數,但我不知道這種格式php有沒有對應方法進行解析。

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

  1. 在跨域的時候,普通的form表單(GET, POST)沒問題,但是使用PUT,DELETE的話,需要設定跨域頭。
    PS:不明白,為什麼需要?

  2. MDN HTTP Method文檔竟然沒有PUT,DELETE的詳細介紹...

  3. PHP擷取PUT,DELETE需要到file_get_contents('php://input');擷取參數資訊,沒有類似$_PUT,$_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-data的composer組件。

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

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

4,標準的form data上傳格式

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

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.