前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现一个精简实用性强的图片接口

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

作者头像
简单、
发布2018-07-18 15:57:46
5020
发布2018-07-18 15:57:46
举报

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

代码语言:javascript
复制
@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
复制
class UploadForm(BaseForm):
    """上传文件"""
    files = FileField(validators=[FileAllowed(files, message="文件格式不正确!")])

重写Form

代码语言:javascript
复制
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
复制
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
复制
DOCUMENTS = tuple('jpg jpe jpeg png gif svg bmp doc docx xls xlsx'.split())  # 允许上传的文件类型

类似网上一些教程的

代码语言:javascript
复制
# @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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档