赵走x博客
网站访问量:151427
首页
书籍
软件
工具
古诗词
搜索
登录
3、Flask before_request 没有调用 Flask400
2、Flask Restful
1、strict_slashes参数
Flask上传图片到static
Flask上传图片到static
资源编号:551050
热度:102
Flask上传图片到static
```python import os import time import uuid import requests from flask import Flask, request, g from flask import jsonify as jsonify_deity app = Flask(__name__, static_folder="./img", static_url_path='/img') @app.before_request def before_request(): params = {} if request.args: params.update(request.args.to_dict(flat=True)) if request.is_json and request.get_data() and request.json: if type(request.json) == type([]): for x in request.json: params.update(x) else: params.update(request.json) if request.form: params.update(request.form.to_dict(flat=True)) g.params = params post = 5000 base_url = f"127.0.0.1:{post}/img/" @app.route('/url', methods=["POST", "OPTIONS"]) def upload_url(): url = g.params.get('url') r = requests.get(url) if r.status_code == 200: tmp = os.path.join(os.getcwd(), "img") time_path = time.strftime("%Y/%m/%d/") tmp = os.path.join(tmp, time_path) if not os.path.exists(tmp): os.makedirs(tmp) name = str(uuid.uuid1()) + ".jpg" path = os.path.join(tmp, name) with open(path, "wb") as f: f.write(r.content) return jsonify_deity({"success": True, "name": name, "url": base_url + path, } ) else: return jsonify_deity({ 'success': False, 'msg': '图片下载失败' }), @app.route('/upload', methods=["POST", "OPTIONS"]) def upload(): print("--1--") tmp = os.path.join(os.getcwd(), "img") time_path = time.strftime("%Y/%m/%d/") tmp = os.path.join(tmp, time_path) if not os.path.exists(tmp): os.makedirs(tmp) print("保存地址1", tmp) file = request.files.get("file", None) if file is None: print("--3---") return jsonify_deity({ 'success': False, 'msg': '文件为空' }) print("file.name", file.filename) name = str(uuid.uuid1()) + "." + file.filename.split('.')[-1] file.save(os.path.join(tmp, name)) url = base_url + os.path.join(time_path, name) return jsonify_deity({"success": True, "name": name, "url": url, "real_name": file.name, "local_name": os.path.join(time_path, name)}) if __name__ == '__main__': app.run(port=post, debug=True) ```