后端的代碼
# coding:utf-8
from flask import Flask app = Flask(__name__)
@app.route("/upload", method=["POST"])
def upload():
# pic是前端代碼中設置的``
file_obj = request.files.get("pic")
if ile_obj is None:
return "未上傳文件"
# 將文件保存到本地
# 1.創建文件
f = open("./daemo.jpg","wb")
# 2.向文件寫內容
data = file_obj.read()
f.write(data)
# 3.關閉文件
f.close()
#直接使用上傳的文件對象保存
file_obj.save("./static/demo.jpg")
return "上傳成功"
if __name__ == '__main__': app.run(host='0.0.0.0', port=80, debug=True)
前端html文件
<form action="" method="post" enctype="multipart/form-data" style="display: inline-block" class="pull-right">
<div class="form-group ">
<label for="exampleInputFile">讀取文件</label>
<input type="file" id="exampleInputFile" name="file" value="">
</div>
<button class="btn btn-success" type="submit">文件導入數據</button>
</form>
# 記得寫enctype="multipart/form-data"
enctype就是encodetype就是編碼類型的意思。
multipart/form-data是指表單數據有多部分構成,既有文本數據,又有文件等二進制數據的意思。
需要注意的是:默認情況下,enctype的值是application/x-www-form-urlencoded,不能用於文件上傳,只有使用了multipart/form-data,才能完整的傳遞文件數據。
application/x-www-form-urlencoded不是不能上傳文件,是只能上傳文本格式的文件,multipart/form-data是將文件以二進制的形式上傳,這樣可以實現多種類型的文件上傳。