Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何实现一个精简实用性强的图片接口

如何实现一个精简实用性强的图片接口

作者头像
简单、
发布于 2018-07-18 07:57:46
发布于 2018-07-18 07:57:46
54200
代码可运行
举报
运行总次数:0
代码可运行

记录的乱。慢慢的调优! code

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@api.route('/upload', methods=['POST'])
@auth.login_required
def uploads():
    form = UploadForm()
    form.validate_for_api()
    re_name = change_filename(form.files.data.filename)
    filename = files.save(form.files.data, name=re_name)
    if re_name is None:
        return ImagesError(message="文件上传失败!")
    return jsonify({'code': 0, 'filename': filename, 'file_url': files.url(filename)})

form

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class UploadForm(BaseForm):
    """上传文件"""
    files = FileField(validators=[FileAllowed(files, message="文件格式不正确!")])

重写Form

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from flask import request
from wtforms import Form

from app.libs.error_code import ParameterException


class BaseForm(Form):
    """
    重写Form,实现是指验证api参数
    """

    def __init__(self):
        # 静默模式接受json参数
        data = request.get_json(silent=True)
        args = request.args.to_dict()
        files = request.files['files']
        super(BaseForm, self).__init__(data=data, files=files, **args)

    def validate_for_api(self):
        valid = super(BaseForm, self).validate()
        if not valid:
            raise ParameterException(message=self.errors)
        return self

配置文件(笨方法)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
files = UploadSet('files', DOCUMENTS)

def create_app():
    """
    初始化项目
    :return:
    """
    app = Flask(__name__)
    app.config.from_object('app.config.setting')
    app.config.from_object('app.config.securecrt')
    app.config['UPLOADED_FILES_DEST'] = os.getcwd() + '/vendor/uploads'
    configure_uploads(app, files)
    patch_request_class(app)
    apply_cors(app)
    register_blueprints(app)
    register_database(app)
    register_swagger(app)
    return app

重写DOCUMENTS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DOCUMENTS = tuple('jpg jpe jpeg png gif svg bmp doc docx xls xlsx'.split())  # 允许上传的文件类型

类似网上一些教程的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# @api.route('/upload', methods=['POST'])
# @auth.login_required
# def uploads():
#     if request.method == 'POST':
#         if 'photo' not in request.files:
#             return ImagesError()
#         file = request.files['photo']
#         re_name = change_filename(file.filename)
#         if file.filename == '':
#             return ImagesError(message="没有找到这个文件!")
#         else:
#             try:
#                 filename = photos.save(file, name=re_name)
#                 return jsonify({'code': 0, 'filename': filename, 'image_url': photos.url(filename)})
#             except Exception as e:
#                 return ImagesError(message="上传的文件格式不支持!")
#     else:
#         return ImagesError(message="错误的请求方式!")

Tags: None

Archives QR Code

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flask 实现文件上传下载
Flask 针对文件的上传下载相关代码片段,多种方法,包括限制文件格式,大小等。 实现图片文件上传 # name: 简单的实现文件上传任务. import os from flask import Flask, request, url_for, send_from_directory from werkzeug import secure_filename ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif']) app = Flask(__nam
王 瑞
2022/12/28
1.1K0
慕课网Flask构建可扩展的RESTful API-4. 理解WTForms并灵活改造她
之前的代码,修改完成之后,已经修复了之前的缺陷,但是这样爆出了两个问题: 1.代码太啰嗦了,每个试图函数里,都需要这么写 2.ClientTypeError只是代表客户端类型异常,其他的参数校验不通过也抛出这个异常的话不合适
Meet相识
2018/09/12
4410
AI 摄影变现:ComfyUI 可变现项目全流程实战|果fx
本项目将使用 ComfyUI 构建一个简单的 AI 摄影应用,用户可以上传照片,使用 AI 处理这些图片,并下载结果。该项目目标在于实现可变现,可以通过提供支付链接来收取费用。
baikeu电抗
2025/01/03
3560
【NISACTF 2022】babyupload
综上,后端代码的逻辑如下:上传的文件不能有后缀名,上传后生成一个uuid,并将uuid和文件名存入数据库中,并返回文件的uuid。再通过/file/uuid访问文件,通过查询数据库得到对应文件名,在文件名前拼接uploads/后读取该路径下上传的文件。
ph0ebus
2023/05/16
3350
Flask图像云端存储打造简洁高效的图片上传站点
在网络应用程序中,实现图片上传功能是一项常见的需求。Flask框架提供了简单而灵活的工具,使得构建这样的功能变得相对简单。本文将介绍如何使用Flask框架创建一个简单的图片上传站点,以及其中涉及的关键技术和步骤。
一键难忘
2024/05/16
3200
Python - 一文入门Flask(Blueprint、SQLAlchemy部分)
从安装Flask,pipenv 到路由实现,Blueprint、SQLAlchemy,一次简单实践,github地址,https://github.com/stark0824/smartAdmin
stark张宇
2023/03/13
6.2K0
NSSCTF Round#6-web
这题思路差点非预期,但远程没打出来,想着利用 CVE-2007-4559 进行任意写文件覆盖 main.py 为软链接,但忘记这是开了 dubug 模式,可以直接写个 .py 的恶意文件覆盖从而 getShell
pankas
2022/10/31
4640
NSSCTF Round#6-web
关于flask入门教程-bootstrap-fileinput实现文件上传
bootstrap-fileinput是一款非常优秀的HTML5文件上传插件,支持文件预览、多选等一系列特性。
python与大数据分析
2022/03/11
1.5K0
关于flask入门教程-bootstrap-fileinput实现文件上传
BBS论坛(二十五)
25.1.发布帖子后台逻辑完成 (1)apps/models.py class PostModel(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(200), nullable=False) content = db.Column(db.Text, nullable=Fal
zhang_derek
2019/02/13
6400
BBS论坛(二十五)
Flask 入门系列教程(四)
在 WEB 应用当中,表单是和用户交互的最常见的方式之一,学习好表单,是非常重要的,用户登录注册、撰写文章等等操作都离不开表单的功能。表单的处理并不简单,除了要创建表单,还需要做相关的验证,还有错误提示等等。这些操作如果都从头开始编写,那么就太复杂了,不过幸运的是,我们有强大的 WTForms 帮助我们解决。
周萝卜
2020/10/10
1.5K0
Flask 入门系列教程(四)
FastAPI从入门到实战(11)——表单请求与上传文件
UploadFile 支持以下 async 方法,(使用内部 SpooledTemporaryFile)可调用相应的文件方法。
MinChess
2022/12/27
1.7K0
FastAPI从入门到实战(11)——表单请求与上传文件
从头完成一个restful API 服务(续)
“ 上次完成了一个初级的API服务器的搭建,今天来给它增加点新功能,要看前面内容的,戳这里”
周萝卜
2019/07/17
6420
从头完成一个restful API 服务(续)
AI展示框架(4):基于flask的图像场景识别web程序构建
图像场景识别是DL+计算机视觉处理的入门程序之一,因此在构建AI展示框架的第一步,则是实现基于flask的图像场景识别。
sparkexpert
2019/05/26
1.1K0
慕课网Flask构建可扩展的RESTful API-5. Token与HTTPBasic验证 —— 用令牌来管理用户
与网站登录不同的是,网站登录将登录信息写入cookie存储在浏览器,而API只负责生成token发送给客户端,而客户端怎么存储有自己决定。
Meet相识
2018/09/12
1.4K0
慕课网Flask构建可扩展的RESTful API-5. Token与HTTPBasic验证 —— 用令牌来管理用户
【Flask】大型项目中对于url_for() 的使用以及请求数据上传文件的开发实例
url_For()是flask框架提供的函数。第一个参数可以作为表示路线的端点传入。它主要用于生成URL,避免开发人员手写URL。 使用url_ for()生成的url是相对路径。一些开发人员更喜欢用绝对路径定义文件路径。(这是非常不友好和不灵活的!) 所以也许你仍然认为它是抽象的。让我们用一个小演示来演示:
上进小菜猪
2022/12/13
7240
【Flask】大型项目中对于url_for() 的使用以及请求数据上传文件的开发实例
Python Web - Flask笔记7
Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。要使用Flask-Script,可以通过pip install flask-script安装。
YingJoy_
2018/08/02
1.1K0
Flask 学习-56.Flask-RESTX 开发文件(FileStorage)上传功能接口
前言 Flask-RESTX  官方文档中没提供文件上传接口示例,需结合flask 框架的文件上传功能 文件上传 RequestParser 参数校验 parser = reqparse.RequestParser() parser.add_argument('file', required=True, type=FileStorage, location='files') parser.add_argument('title', type=FileStorag
上海-悠悠
2022/09/13
7550
Flask 学习-56.Flask-RESTX 开发文件(FileStorage)上传功能接口
Flask-蓝图、模型与CodeFirs
db.create_all(app=app),这样就可以了,在数据库中就可以看到表了
py3study
2020/01/19
6090
Flask-蓝图、模型与CodeFirs
Flask 学习-55.文件上传功能开发
前言 文件上传的基本原理实际上很简单,基本上是: 一个带有 enctype=multipart/form-data 的 <form> 标记,标记中含有 一个 <input type=file> 。 应用通过 request 对象的 files 字典来访问文件。 使用文件的 save() 方法把文件 永久地保存在文件系统中。 简单介绍 从最基本的功能开始,这个应用上传文件到一个指定目录,并把文件显示给用户。 以下是应用的部分代码: import os from flask import Flask, flas
上海-悠悠
2022/09/13
1.1K0
Flask 学习-55.文件上传功能开发
7.Flask文件上传
 1.1.上传文件和访问上次的文件 upload_file_demo.py from flask import Flask,request,render_template import os from werkzeug.utils import secure_filename from flask import send_from_directory app = Flask(__name__) #新建images文件夹,UPLOAD_PATH就是images的路径 UPLOAD_PATH = os.pa
zhang_derek
2018/08/01
3790
推荐阅读
相关推荐
Flask 实现文件上传下载
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验