django檔案上傳

2022-07-24 13:15:26 字數 2964 閱讀 6020

django上傳檔案,可直接通過form表單的input type='file'上傳,也可構造乙個模型通過模型的filefield欄位上傳。

def

form(req):

if req.method == '

get'

:

return render(req,'

form.html')

else

: file = req.files.get('

file')

print

(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

>

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...