flask—本地图片,视频上传

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)

操作如下:

  1. postman发送请求
    在这里插入图片描述
  2. 前端展示:

由于写起来的话稍微有点复杂,这里的重点是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小白,望大佬指点

猜你喜欢

转载自blog.csdn.net/weixin_45666249/article/details/114989583
今日推荐