flask实现客户端上传图片与base64编码转换
参考链接:https://blog.csdn.net/weixin_36380516/article/details/80347192
测试代码:
#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Author: elfin-2020
# project: ImgPushWeb
import os
import sys
import base64
import socket
from flask import Flask, request, jsonify, render_template
sys.path.append(os.path.abspath(__file__).split("Img2Web")[0])
path_dir = os.path.dirname(os.path.abspath(__file__))
hostname = socket.gethostname()
ip_dir = socket.gethostbyname(hostname)
ALLOWED_EXTENSIONS = {'png', 'PNG'}
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
def set_app():
# 初始化Flask对象
#####################################################
app = Flask(__name__, template_folder='../templates')
# 设置前端中文不乱码
app.config["JSON_AS_ASCII"] = False
#####################################################
@app.route("/img", methods=["GET"])
def web_load():
return render_template("admin.html")
@app.route("/img", methods=["POST"])
def img_pull():
res_dict = {
"code": 0,
"msg": "执行失败",
"data": {},
}
file = request.files.get("img")
img_base64 = request.form.get("base64")
if not file:
res_dict["msg"] = "没有上传图片"
return jsonify(res_dict)
if not allowed_file(file.filename):
res_dict["msg"] = "请上传png/PNG格式的图片"
return jsonify(res_dict)
# 将图片转为base64编码
#################################################
# 获取图片文件对象的数据流
img_stream = file.stream.read()
img_base64 = base64.b64encode(img_stream)
#################################################
res_dict["code"] = 1
res_dict["msg"] = "执行成功"
res_dict["data"]["img_stream"] = str(img_base64)
print(dir(file.stream))
return jsonify(res_dict)
app.run(host=ip_dir, port=10018, debug=True)
if __name__ == '__main__':
set_app()