我正在嘗試創建一個簡單的網站來在影像上運行神經網路。前端在 VUE.js 中,后端在 python flask 中。我可以在標頭中傳遞我想要的資料,例如 id 和 precision,但是,該檔案不會“上傳”到燒瓶服務器。知道我應該怎么做嗎?
這是我在 javascript 中的方法:
async predictUF(img) {
//let config = {header : {'Content-Type' : 'image/png'}}
const response = await fetch("http://localhost:5000/process_img", {
method: 'POST',
headers: {'id': '123', 'precision': '75'},
files: img,
mode: 'cors',
cache: 'default'
});
const recv = await response.json();
console.log(recv);
},
這是我的燒瓶服務器代碼:
@app.route('/process_img', methods=['POST', 'GET'])
@cross_origin()
def process_image():
if request.method == 'POST':
filenames = []
payload = request.headers
id = payload['id']
precision = payload['precision']
files = request.files.to_dict(flat=False)
for file_list in files.values():
for file in file_list:
name = secure_filename(file.filename)
path = save_image(file, name)
filenames.append(path)
results, img_paths = run_process(filenames)
encoded_imgs = [encode_image(p) for p in img_paths]
return jsonify({'msg': 'success', 'results': [results], 'images': encoded_imgs})
else:
return 'Methods restricted'
我有一個 python 腳本來測驗完美運行的 api,它是這樣的(我故意忽略了 base64 編碼以簡化問題):
r = requests.post(url, files=files, data=payload)
有什么方法可以填充 javascript fetch api 中的檔案,還是我弄錯了?
uj5u.com熱心網友回復:
感謝 Ibsn 我讓它作業了。
為了讓flask 接受request.files:一個HTML 表單必須與enctype=multipart/form-data 一起使用。(如何使用 JS fetch API 上傳檔案?)
幸運的是,如果編碼型別設定為“multipart/form-data”,javascript FormData() 使用的格式與表單將使用的格式相同。所以我最終的 js 作業版本是這樣的。(獲取 Flask 請求中收到的資料)
async predictUF(img) {
var data = new FormData();
data.append('files', img, img.name);
const response = await fetch("http://localhost:5000/process_img", {
method: 'POST',
headers: {'id': '123', 'precision': '75'},
body: data,
mode: 'cors',
cache: 'default'
});
const recv = await response.json();
console.log(recv);
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334874.html
標籤:javascript Python 接口 烧瓶 拿来
上一篇:Flask:如何將上傳的檔案作為輸入傳遞給方法?AttributeError:'_io.BytesIO'物件沒有屬性'lower'
下一篇:從陣列串列物件中洗掉值的類函式
