您好,登錄后才能下訂單哦!
小編這次要給大家分享的是Django上傳文件時,request.FILES為空怎么辦,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
用html的form上傳文件時,request.FILES為空,沒有收到上傳來的文件,但是在request.POST里找到了上傳的文件名(只是一個字符串)。
解決方法:
為form表單規定enctype屬性,其值為"multipart/form-data"。
enctype 屬性規定在發送到服務器之前應該如何對表單數據進行編碼。
值 | 描述 |
---|---|
application/x-www-form-urlencoded | 在發送前編碼所有字符(默認) |
multipart/form-data | 不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。 |
text/plain | 空格轉換為 “+” 加號,但不對特殊字符編碼。 |
<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="跳轉鏈接" method="post"> <div> <input type="file" name="t_photo" accept="image/*"> </div> </form>
后端收不到這個文件,但其他的字符串數據能正常收到。
解決:
1.首先看一下,上傳文件的form表單必須加上enctype="multipart/form-data",因為默認情況下,編碼enctype的值是application/x-www-form-urlencoded,不能用于文件上傳,只有使用了multipart/form-data,才能完整的傳遞文件數據。
<form accept-charset="UTF-8" action="跳轉鏈接" 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)
看完這篇關于Django上傳文件時,request.FILES為空怎么辦的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。