一、为什么要使用 base64 格式传输文件?
二、base64 优点
- 减少了 HTTP 请求
- 某些文件可以避免跨域的问题
- 避免了图片更新时要重新上传,还要清理缓存的问题
三、代码设计
3.1 服务端
from flask import Flask, request
import cv2
import numpy as np
import base64
import json
app = Flask(__name__)
'''
路由器端口api,传输方式POST
GET用于从服务器端获取数据,包括静态资源(HTML|JS|CSS|Image等等)、动态数据展示(列表数据、详情数据等等)。
POST用于向服务器提交数据,比如增删改数据,提交一个表单新建一个用户、或修改一个用户等。
'''
@app.route('/api',methods=['POST'])
def api():
data = request.get_data().decode('utf-8')
data = json.loads(data)
image_b64 = data["img"]
image_decode = base64.b64decode(image_b64)
nparr = np.fromstring(image_decode, np.uint8)
img_np = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
cv2.imwrite('test.jpg',img_np)
return 'OK'
if __name__ == '__main__':
app.run(debug=True)
3.2 客户端
import base64
import requests
import json
url = 'http://127.0.0.1:5000/api'
f = open('1.png', 'rb')
base64_data = base64.b64encode(f.read())
f.close()
base64_data = base64_data.decode()
data = {'img':base64_data}
r = requests.post(url,data =json.dumps(data))
print(r.text)
参考链接
- https://mp.weixin.qq.com/s/xGJ-lIsK-i6Qi_5EiY6DpA