標籤:get 臨時 res mit html bsp order ack padding
一、加enctype="multipart/form-data"<!DOCTYPE html><html><head> <title>test</title></head><body><form action="/test/" method="post" enctype="multipart/form-data"> <!--如果不加這個的話,提交的資料會以索引值對提交--> {% csrf_token %} 檔案:<input type="file" name=‘test‘><br> <input type="submit" value="提交"></form></body></html>def test(request): if request.method == ‘POST‘: file = request.FILES.get(‘test‘) with open(file.name, ‘wb‘) as f: for line in file: f.write(line) return render(request, ‘test.html‘) 二、.chunks()def upload(request): """ 儲存上傳檔案前,資料需要存放在某個位置。預設當上傳檔案小於2.5M時,django會將上傳檔案的全部內容讀進記憶體。從記憶體讀取一次,寫磁碟一次。 但當上傳檔案很大時,django會把上傳檔案寫到臨時檔案中,然後存放到系統臨時檔案夾中。 :param request: :return: """ if request.method == "POST": # 從請求的FILES中擷取上傳檔案的檔案名稱,file為頁面上type=files類型input的name屬性值 filename = request.FILES["file"].name # 在項目目錄下建立一個檔案 with open(filename, "wb") as f: # 從上傳的檔案對象中一點一點讀 for chunk in request.FILES["file"].chunks(): # 寫入本地檔案 f.write(chunk) return HttpResponse("上傳OK")<!DOCTYPE html><html><head> <title>test</title></head><body><form action="/test/" method="post"> {% csrf_token %} 檔案:<input type="file" name=‘test‘> <input type="submit" value="提交"></form></body></html>
檔案上傳的幾種方法