python向後端Flask服務傳送檔案並在後端處理

weixin_50878401發表於2020-10-04

python向後端Flask服務傳送檔案並在後端處理

1.後端程式碼

from flask import Flask,request#及你所需要的其它模組

app=Flask(__name__)

@app.route("/cv", methods=['GET','POST'])
def get_frame():
     file = request.files.get('file')#獲取前端傳輸來的索引為file的檔案
     file.save('1.jpg')#將檔案儲存為1.jpg在伺服器端
     #你的處理檔案的程式碼段
     return response
     
app.run(host="127.0.0.1", port=8080, debug=True)

關鍵點
1.Flask框架詳解參見本專題的上一篇博文link.

2.這裡API的引數為空,檔案不能直接被當作一個引數傳過來,而要通過request.files.get()函式獲取從前端傳來的檔案資料,然後再呼叫.save函式儲存在伺服器本地

2.前端程式碼

import requests

url = "http://127.0.0.1:8080/cv"#後端api連結
f=open("cv.jpg",'rb')#以二進位制開啟前端本地檔案
files = {'file':f}#將二進位制檔案封裝為這樣一個字典,索引為file
r = requests.post(url=url,files=files)#將檔案傳送至url所指向的api地址並呼叫該api

print(r.text)列印返回結果

關鍵點
1.封裝為字典時的索引即為後端中request.files.get()的引數。

2.requests.post()函式有多個引數,且部分非必選。故引數應儘量寫成(url=url,files=files)而不要直接寫成(url,files)以標明你給的每個引數對應函式所需要的哪個引數,以免函式在匹配引數是出現混亂。本例中即省略了部分引數。

相關文章