form表單上傳文件


form表單上傳文件

views

def up(request):
    return render(request,"up.html")

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    <input type="text" name="username">
    <input type="file" name="mufile">
    <input type="submit" name="mufile">
</form>
</body>
</html>

這時候隨便選擇一個文件發送,結果當然是不成功的。

錯誤信息

CSRF verification failed. Request aborted.
"CSRF驗證失敗。請求中止。"

不能發,現在要朝着后端發送post,還是要去把中間件給注釋掉,然后再點提交就沒問題了,那么后端如何獲取post請求的數據, 在request.post里面,這時候還只是拿來了一個字符串,拿不到數據,只是拿到了文件的名字.

form表單上傳文件注意事項

1、一定要是post

2、enctype默認是傳不了文件的,要把它改成form-data,才能傳文件

<form action="" method="post" enctype="multipart/form-data">

然后在傳,發現這次連字符串都沒有了。

原來內部有個機制,文件不會放在post里面去,因為文件不是一個簡單的數據,簡單的數據,像普通的字符串什么的,回放在post里面,而復雜的數據會幫你塞到另外一個地方去,就是 request.FILES里面。然后獲取文件對象

file_obj = request.FILES.get('傳文件的那個name值')

print(file_obj.name)#就能打印出來文件的名字了,說明在這里面,接下來可以存了

with open(file_obj.name,'wb')as f:

	for line in file_obj:

			f.write(line)

這就存完了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM