HTML代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form enctype="multipart/form-data" action="/upload/" method="POST"> {% csrf_token %} <input type="file" name="upload" id="file_input" multiple webkitdirectory=""> <br/> <input type="submit" value="上傳"/> </form> </body> </html>
url.py urlpatterns = [ url(r'^upload/',upload) ]
views.py # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.shortcuts import render from django.http import HttpResponse from django.http import HttpResponseRedirect import os import sys reload(sys) sys.setdefaultencoding('utf8') # Create your views here. def upload(request): if request.method == 'GET': return render(request, 'index.html') elif request.method == 'POST': dir = request.FILES dirlist = dir.getlist("upload", None) #獲取文件列表 if not dirlist: return HttpResponse("沒有上傳內容") else: for file in dirlist: position = os.path.join('C:\\Users\\huyuan\\Desktop\\test\\upload',str(file)) # 獲取上傳文件的文件名,並將其存儲到指定位置 storage = open(position, 'wb+') # 打開存儲文件 for chunk in file.chunks(): # 分塊寫入文件 storage.write(chunk) storage.close() #寫入完成後關閉文件 return HttpResponse("上傳成功") # 返回客戶端信息 else: return HttpResponseRedirect("不支持的請求方法")
這種方式上傳目錄無法保持目錄結構,只會把目錄和其子目錄的文件上傳而不會上傳目錄