1. 程式人生 > >Django中實現檔案上傳功能

Django中實現檔案上傳功能

在web開發中,檔案上傳與下載是常見的功能,在Django中實現檔案的上傳與下載也非常簡單,實現步驟與其他功能實現類似,1. 新建一個模板,2. 編寫模板對應的view函式,3. 配置view與模板關聯的url。具體實現如下:

1. 新建一個模板

     新建一個用於上傳檔案的模板(本文的模板是基於bootstrap的),內容如下:

<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>
   注意:這個Form表單中必須有屬性enctype="multipart/form-data",這樣當request方法是POST時,處理這個form的view中才能接受到request.FILES中的檔案資料,可以通過request.FILES['file']來存取。如果不設定這個屬性,request.FILES則為空。

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