溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Django上傳文件時,request.FILES為空怎么辦

發(fā)布時間:2020-07-23 09:55:30 來源:億速云 閱讀:429 作者:小豬 欄目:開發(fā)技術(shù)

小編這次要給大家分享的是Django上傳文件時,request.FILES為空怎么辦,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

用html的form上傳文件時,request.FILES為空,沒有收到上傳來的文件,但是在request.POST里找到了上傳的文件名(只是一個字符串)。

解決方法:

為form表單規(guī)定enctype屬性,其值為"multipart/form-data"。

enctype 屬性規(guī)定在發(fā)送到服務(wù)器之前應(yīng)該如何對表單數(shù)據(jù)進行編碼。

描述
application/x-www-form-urlencoded在發(fā)送前編碼所有字符(默認)
multipart/form-data不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。
text/plain空格轉(zhuǎn)換為 “+” 加號,但不對特殊字符編碼。

<form action="xxx" method="xxx" enctype="multipart/form-data">

這樣在request.FILES就能找到上傳的文件啦 U*_*U

補充知識:解決Django文件上傳views報錯NoneType,其他能收到

Django通過form表單給后臺提交一個文件的時候,報錯

'NoneType' object has no attribute 'name'

前端:

<form accept-charset="UTF-8" action="跳轉(zhuǎn)鏈接" method="post">
  <div>
    <input type="file" name="t_photo" accept="image/*">
  </div>
</form>

后端收不到這個文件,但其他的字符串數(shù)據(jù)能正常收到。

解決:

1.首先看一下,上傳文件的form表單必須加上enctype="multipart/form-data",因為默認情況下,編碼enctype的值是application/x-www-form-urlencoded,不能用于文件上傳,只有使用了multipart/form-data,才能完整的傳遞文件數(shù)據(jù)。

<form accept-charset="UTF-8" action="跳轉(zhuǎn)鏈接" method="post" enctype="multipart/form-data">
  <div>
    <input type="file" name="t_photo" accept="image/*">
  </div>
</form>

2.再檢查一下,Django的view中接受文件不是在POST里,而是在FILE里。

request.POST.get('t_photo') # 不是在POST里
request.FILES.get('t_photo', None)

看完這篇關(guān)于Django上傳文件時,request.FILES為空怎么辦的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI