django上傳檔案,可直接通過form表單的input type='file'上傳,也可構造乙個模型通過模型的filefield欄位上傳。
def處理form表單的函式form(req):
if req.method == '
get'
:
return render(req,'
form.html')
else
: file = req.files.get('
file')
(file,file.name,file.size)
with open(os.path.join(
'static
',file.name),'
wb') as f: #
在static目錄下建立同名檔案
for line in
file.chunks():
f.write(line)
#逐行讀取上傳的檔案內容並寫入新建立的同名檔案
')
<form表單模型form
action
="form"
method
="post"
enctype
="multipart/form-data"
>
<
p>姓名 <
input
type
="text"
name
="user"
>
p>
<
p>檔案 <
input
type
="file"
name
="file"
>
p>
<
p><
input
type
="submit"
>
p>
form
>
①對於上傳檔案,在後台通過file = req.files.get('file')獲取,而在前端,form表單中需要指定引數enctype="multipart/form-data"
②對於獲取到的file檔案,file.name和file.size表示檔案的名稱和大小
③以上只是獲取到檔案,還需要上傳到本地伺服器,以上從with到f.write的三行表示在static目錄下建立同名檔案,逐行讀取檔案內容並寫入。
單獨使用型別為file的input框,顯示效果不佳,未選則檔案時選擇框右側會有提示「未選擇任何檔案」如上圖1,可利用a標籤、定位和透明度自定義上傳標籤,如上圖三。
<div
style
="position: relative"
>
<
a style
="border: gray solid 1px"
>選擇檔案
a>
<
input
type
="file"
name
="file"
style
="opacity: 0.5;position: absolute;left: 0"
>
div>
#建立模型和處理函式模型class
uploadform(forms.form):
user = fields.charfield(label='姓名'
) file = fields.filefield(label='檔案'
)#處理函式
defmodel(req):
if req.method =='
get'
: obj =uploadform()
return render(req, '
model.html
',)
else
: obj =uploadform(req.post,req.files)
ifobj.is_valid():
file = obj.cleaned_data['
file
'] #
獲取檔案
')
<模型form
action
="model"
method
="post"
enctype
="multipart/form-data"
>
<
table
>
}
table
>
<
input
type
="submit"
>
form
>
django 檔案上傳
檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...
django 檔案上傳
檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...
Django檔案上傳
lang en charset utf 8 titletitle head action home method post enctype multipart form data type file name file type submit value 提交 p form div body htm...