1. 程式人生 > >Django_檔案上傳

Django_檔案上傳

  使用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()