標籤:utf-8 ret orm name django os模組 ati write 上傳檔案
上傳檔案
注意:FORM表單提交檔案要有一個參數enctype="multipart/form-data"
普通上傳:
urls:
url(r‘^f1/‘,views.f1),url(r‘^f2/‘,views.f2),
views:
def f1(request): if request.method == "GET": return render(request,‘f1.html‘) else: import os #匯入os模組 #request.get / post /FILES方式.get()取值 去檔案name=fafafa的值 file_obj=request.FILES.get("fafafa") #拿到一個檔案對象 f=open(os.path.join(‘static‘,file_obj.name),‘wb‘) #將檔案名稱加入到static目錄下 for chunk in file_obj.chunks(): #chunk塊 檔案的大小,迴圈file_obj檔案對象.chunks f.write(chunk)#寫到檔案裡面去 f.close() # return HttpResponse(".....") return render(request,‘f1.html‘)
html:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form method="POST" action="/f1/" enctype="multipart/form-data"> {% csrf_token %} <input type="text" name="user"> <input type="file" name="fafafa" > <input type="submit" value="提交"></form></body></html>
Form組件上傳:
views:
class F2Form(Form): user=fields.CharField() fafafa=fields.FileField()def f2(request): if request.method == "GET": obj=F2Form() return render(request,‘f2.html‘,{‘obj‘:obj}) else: obj=F2Form(data=request.POST,files=request.FILES) #以POST的方式擷取到檔案的所有對象 if obj.is_valid(): #校正拿取的檔案對象 # print(obj.cleaned_data) print(obj.cleaned_data.get(‘fafafa‘).name) #校正成功 擷取上傳檔案對象的 fafafa 檔案名稱 print(obj.cleaned_data.get(‘fafafa‘).size) #擷取檔案對象的fafafa size大小 return render(request,‘f2.html‘,{‘obj‘:obj}) #錯誤資訊的時候 就返回到前端頁面 繼續上傳
html:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form method="POST" action="/f2/" enctype="multipart/form-data"> {% csrf_token %} {{ obj.user }} {{ obj.fafafa }} <input type="submit" value="提交"></form></body></html>
django Form組件 上傳檔案