flask本地图片上传:
大体思想:flask接收到前端传来的图片(不仅仅是图片,还可以是视频,pdf等),然后生成唯一标识存入后端(static/file下),再配置成对应外网访问的连接,返回对应链接,前端接收,然后通过img,vedio标签展示
from flask import Flask, jsonify
from werkzeug.utils import secure_filename
from flask import request
import os
from datetime import datetime
import random
# 路径配置
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
# 上传图潘test接口
@app.route("/upload", methods=["POST"])
def upload():
# 获取文件列表
f = request.files.get('file')
# 返回文件列表
refile = []
# 获取安全文件名
filename = secure_filename(f.filename)
# 生成随机数
randomNum = random.randint(0, 100)
# 生成文件名,以及保存文件
filename = datetime.now().strftime("%Y%m%d%H%M%S") + "_" + str(randomNum) + '.' + filename.rsplit('.',1)[1]
file_path = basedir + '/static/file/' + filename
f.save(file_path)
# 配置成对应外网访问的连接
my_host = "http://127.0.0.1:5000"
new_path_file = my_host + '/static/file/' + filename
refile.append(new_path_file)
data = {
"msg":"success","url":refile}
payload = jsonify(data)
return payload,200
if __name__ == "__main__":
app.run(debug=True)
操作如下:
- postman发送请求
- 前端展示:
由于写起来的话稍微有点复杂,这里的重点是img或vedio根据链接展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask上传图片演示</title>
</head>
<body>
<h1>使用Flask上传本地文件</h1>
<img src="http://127.0.0.1:5000/static/file/20210318170712_77.jpg" style="width: 30%;">
<video src="http://127.0.0.1:5000/static/file/20210318185409_99.mp4" style="width: 30%;" controls="controls" autoplay="autoplay">
您的浏览器不支持 video 标签。
</video>
</body>
</html>
Flask小白,望大佬指点