我正在尝试使用 Ajax POST 请求在 FormData 中发送图像文件。 我面临两个问题:
- 我不知道如何提取 flask 部分的 FormData
- 发出 ajax POST 请求时出现 500 内部服务器错误(不确定这是不是因为 1)
谢谢
flask python代码:
@app.route('/', methods=['GET','POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file: # and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(os.getcwd()+"/static", "current_image.jpg"))
return jsonify({'tasks': tasks})
HTML 和 Javascript 代码:
<input id="pictureInput" type=file name=file>
<input type=submit value=Upload id="button">
<script type="text/javascript">
var pictureInput = document.getElementById("pictureInput");
var myFormData = new FormData();
myFormData.append('pictureFile', pictureInput.files[0]);
$("#button").click(function(){
console.log(pictureInput);
console.log(pictureInput.files[0]);
console.log(myFormData);
$.ajax({
url: "http://localhost:8000/",
type: 'POST',
processData: false, // important
contentType: false, // important
dataType : 'json',
data: myFormData,
success : function(data){
console.log(data);
},
});
});
</script>
最佳答案
以下代码应该适合您。 您需要将 static
文件夹与您的 app.py
文件放在同一级别
app.py
import os
from flask import Flask, request, jsonify
from werkzeug.utils import secure_filename
app = Flask(__name__)
@app.route('/', methods=['GET','POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file:
filename = secure_filename(file.filename)
file.save(os.path.join(os.getcwd()+"/static", "current_image.jpg"))
tasks = []
return jsonify({'tasks': tasks})
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)
tasks 上面没有在你的代码中定义,所以我只是将它初始化为一个空列表。您还需要确保在您的模板中加载了 jQuery。
关于python - 如何在 Flask 中接受通过 ajax 发送的 FormData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40091718/