使用PUT方法上傳文件如何?

2024-04-29    分類: 網(wǎng)站建設(shè)

HTTP中提供了這么多方法,放著不用簡直浪費!流行使用POST上傳文件是因為當(dāng)年的Web沒有太多API的支持,只能用表單來上傳文件,所以后來大家也習(xí)慣了使用POST。但現(xiàn)在既然支持了這么多API,用PUT方法上傳文件也是可以實現(xiàn)的,而且語義上更合適。 PUT方法的特點是傳輸?shù)膶嶓w部分是一個無結(jié)構(gòu)的二進制數(shù)據(jù),而POST方法則傾向于結(jié)構(gòu)化的數(shù)據(jù)。上傳文件這個行為本身就是無結(jié)構(gòu)數(shù)據(jù)的傳輸(文件是一個整體,文件的內(nèi)容與傳輸行為無關(guān)),所以使用PUT更合適。當(dāng)然,上傳文件這個行為不光是把文件丟到服務(wù)器上而已,可能還需要傳遞一些文件的相關(guān)信息,比如文件在客戶端的文件名之類的,這在使用POST方法時很容易實現(xiàn)。其實使用PUT方法也不存在什么問題,這些額外信息完全可以用自定義的HTTP請求頭來傳輸。 現(xiàn)代瀏覽器對文件操作的支持已經(jīng)很豐富了,可以直接從FILE控件的files屬性上獲取到用戶選中的文件對象,然后通過XHR對象的send方法發(fā)送到服務(wù)器,這非常方便。而且服務(wù)器端省去了對 multipart/form-data 的解析,實現(xiàn)起來更加容易。 使用PUT方法上傳文件也存在一些需要解決的問題。根據(jù)PUT的語義,我們需要知道文件上傳之后的URL(這個URL在文件上傳前訪問的話是404狀態(tài)碼),而不是像POST方法一樣,把所有的上傳都提交到同一個URL上。另外則是安全性的問題,并不是所有人都有上傳的權(quán)限,比如某個資源屬于某個用戶,只有這個特定用戶可以操作,這實現(xiàn)起來就有點麻煩(其實POST方法如果要實現(xiàn)這個的話也挺麻煩的,只是POST的麻煩被掩蓋了)。對于這些問題,我覺得使用文件MD5作為URL就很容易解決。文件上傳前在前端就可以計算出MD5,就可以得到上傳后的URL,上傳后文件也不會被篡改,權(quán)限問題也隨之解決了。 其實對于PUT方法上傳文件,我想到的遠不止以上這些。只是我的語言比較貧乏,沒辦法把一堆關(guān)系松散的概念一下子描述出來。我打算先試著把這玩意兒先實現(xiàn)出來,證明一些想法的正確性后再做進一步說明。

分享標(biāo)題:使用PUT方法上傳文件如何?
標(biāo)題來源:http://www.muchs.cn/news30/326130.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站維護、網(wǎng)站營銷網(wǎng)站設(shè)計、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)