Django中實現檔案上傳功能
阿新 • • 發佈:2019-01-31
在web開發中,檔案上傳與下載是常見的功能,在Django中實現檔案的上傳與下載也非常簡單,實現步驟與其他功能實現類似,1. 新建一個模板,2. 編寫模板對應的view函式,3. 配置view與模板關聯的url。具體實現如下:
1. 新建一個模板:
新建一個用於上傳檔案的模板(本文的模板是基於bootstrap的),內容如下:
注意:這個Form表單中必須有屬性enctype="multipart/form-data",這樣當request方法是POST時,處理這個form的view中才能接受到request.FILES中的檔案資料,可以通過request.FILES['file']來存取。如果不設定這個屬性,request.FILES則為空。<div class="row"> <div class="col-md-8 col-md-offset-2"> <form class="form-inline" role="form" method="post" enctype="multipart/form-data" accept-charset="utf-8"> <div class="form-group"> <input type="file" name="file"> </div> <div class="form-group"> <input type="submit" value="上傳檔案"> </div> </form> </div> </div>
2. 編寫模板對應的view函式
def upload(request): if request.method=="POST": handle_upload_file(request.FILES['file'],str(request.FILES['file'])) return HttpResponse('Successful') #此處簡單返回一個成功的訊息,在實際應用中可以返回到指定的頁面中 return render_to_response('course/upload.html') def handle_upload_file(file,filename): path='media/uploads/' #上傳檔案的儲存路徑,可以自己指定任意的路徑 if not os.path.exists(path): os.makedirs(path) with open(path+filename,'wb+')as destination: for chunk in file.chunks(): destination.write(chunk)
3. 配置相應的URL;
在urls.py檔案中配置相應的url,
url(r'^upload/$',views.upload,name='upload'),
經過上述三個步驟後,我們就寫好檔案上傳的功能,下面測試一下吧:
啟動開發伺服器後,訪問相應的upload頁面,頁面如下:
點選【選擇檔案】按鈕,開啟想要上傳的檔案,然後點選【上傳檔案】按鈕,就可以將檔案上傳到指定的資料夾中了。
相關的參考文章:
http://www.cnblogs.com/linjiqin/p/3731751.html
http://my.oschina.net/yushulx/blog/469802