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為空的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。