Django_檔案上傳
阿新 • • 發佈:2018-12-17
使用Django框架實現檔案上傳功能
upload.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>uploadFile</title> </head> <body> <form method="post" action="/upload/" enctype="multipart/form-data"> <input id="user" type="text" name="user" /> <input id='file' type="file" name="file" /> <input type="submit" /> </form> </body> </html>
模板檔案中,建立一個form表單,在有檔案上傳的form表單中,method屬性必須為post,而且必須指定它的encrytype=‘multipart/form-data’,表示不對字元進行編碼,type型別為'file'
views
def uploadFile(request): if request.method == 'POST': my_file = request.FILES.get('file') with open(os.path.join('uploadFileDemo', my_file.name), 'wb') as f: for line in my_file.chunks(): f.write(line) return HttpResponse('上傳成功') return render(request,'upload.html')
獲取檔案使用request.FILES.get()方法,因為上傳的檔案是儲存在FILES這個字典中的,關於上傳檔案的幾個方法和屬性如下
myFile.read():從檔案中讀取整個上傳的資料,這個方法只適合小檔案 myFile.chunks():按塊返回檔案,通過在for迴圈中進行迭代,可以將大檔案按塊寫入到伺服器中 myFile.multiple_chunks():這個方法根據myFile的大小,返回True或者False,當myFile檔案大於2.5M(預設為2.5M,可以調整)時,該方法返回True,否則返回False,因此可以根據該方法來選擇選用read方法讀取還是採用chunks方法 myFile.name():這是一個屬性,該屬性得到上傳的檔名,包括字尾 myFile.size:這是一個屬性,該屬性得到上傳檔案的大小
#myFile.multiple_chunks()使用 if myFile.multiple_chunks() == False: # 使用myFile.read() else: # 使用myFile.chunks()