Flask-RESTful是用于快速构建REST API的Flask扩展。我最近在使用Flask-Restful + Vue.js写一个轻量博客时有一个前端后端上传图片的需求。在Flask-Restful的官方文档中并没有相关的内容。下面是我谷歌查找资料的总结。

引入FileStorage

flask-restful的参数解析中并没有文件类型,需要引入werkzeug.datastructures.FileStorage作为参数解析中的类型。上传图片的资源api可以这样编写:

class UploadImg(Resource):def __init__(self):# 创建一个新的解析器self.parser = reqparse.RequestParser()# 增加imgFile参数,用来解析前端传来的图片。self.parser.add_argument('imgFile', required=True, type=FileStorage,location='files',help="imgFile is wrong.")def post(self):img_file = self.parser.parse_args().get('imgFile')# 保存图片img_file.save(img_file.filename)return 'ok', 201

FileStorage这个类有很多的内置方法,这里使用了save方法保存了图片,save方法接受两个参数源码里面说明如下:dst指定保存文件的name.

def save(self, dst, buffer_size=16384)::param dst: a filename, :class:`os.PathLike`, or open fileobject to write to.:param buffer_size: Passed as the ``length`` parameter of:func:`shutil.copyfileobj`.

完整代码

#!/usr/bin/env python
# encoding: utf-8
from flask_restful import reqparse, Resource, Api
from werkzeug.datastructures import FileStorage
from flask import Flaskclass UploadImg(Resource):def __init__(self):# 创建一个新的解析器self.parser = reqparse.RequestParser()# 增加imgFile参数,用来解析前端传来的图片。self.parser.add_argument('imgFile', required=True, type=FileStorage,location='files',help="imgFile is wrong.")def post(self):img_file = self.parser.parse_args().get('imgFile')img_file.save(img_file.filename)return 'ok', 201if __name__ == '__main__':app = Flask(__name__)api = Api(app)api.add_resource(UploadImg, '/uploadimg')app.run()

restful get不传参数404_flask-restful编写上传图片api相关推荐

  1. flask 上传excel 前端_flask-restful编写上传图片api

    Flask-RESTful是用于快速构建REST API的Flask扩展.我最近在使用Flask-Restful + Vue.js写一个轻量博客时有一个前端后端上传图片的需求.在Flask-Restf ...

  2. restful get不传参数404_你知道什么是 Restful 风格吗?SpringMVC 带我们实现它!

    Restful 风格的 API 是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓 ...

  3. sh执行文件 参数传递_sh 脚本执行sql文件传参数

    一.前言 今天做数据删除,用的命令行输入参数,并且调用执行的sql文件,我采用了sed命令,进行替换. sh脚本如下 #! /bin/sh echo "Please enter the ba ...

  4. restful服务端客户端_测试RESTful服务的客户端

    restful服务端客户端 开发使用RESTful Web API的应用程序可能意味着开发服务器和客户端. 为服务器端编写集成测试可以像使用Arquillian启动服务器一样容易,并且可以通过REST ...

  5. jsf 传参数_在JSF 2中对定制验证器进行参数化

    jsf 传参数 在JSF 2中编写自定义验证器并不是一项复杂的任务. 您实现Validator接口,添加@FacesValidator批注,并在faces-config.xml中插入validator ...

  6. .net前台ajax,asp.net利用Ajax和Jquery在前台向后台传参数并返回值

    1----------前台 首先需要 Jquer的包 下面是 $(function () { $('#txtUserName').blur(function () { var username = $ ...

  7. pytest接口测试之fixture传参数request

    本文主要介绍了pytest接口测试之fixture传参数request的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前言 有的测试用例,需要依赖于某些特定的 ...

  8. Java中传参数--值传递和引用传递

    ** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...

  9. python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参...

    1.必传参数也叫做位置参数,因为必填,也必须对应位置 2.默认值参数如上图的word 3.参数组参数:传进去的是0个.或多个value的形式,,,和位置参数有点像,只传value值,但是没有限制个数 ...

最新文章

  1. JSP项目目录中每个文件夹及配置文件的作用
  2. python软件下载免费还是收费-为什么python最强大的IDE是收费的PyCharm?
  3. 黄哥漫谈Python 生成器
  4. 查看Hive SQL执行日志
  5. CodeForces - 1291D Irreducible Anagrams(思维+构造)
  6. junit可执行但控制层无法执行_Junit测试时ContextLoader.getCurrentWebApplicationContext()返回空值...
  7. 计算机c语言二级试题及答案,计算机c语言二级考试试题及其答案.doc
  8. swift 去json空格_数字货币为什么要去中心化?好处是什么?
  9. vue点击按钮之后置成不可用_Vue 动态改变 button 的 disabled 状态
  10. 21 个编程的热门/冷门趋势
  11. 【报告分享】2022中国人工智能人才培养报告.pdf(附下载链接)
  12. Python在使用pip安装某个库时报错 Could not find a version that satisfies the requirement numpy
  13. 无法打开配置文件vmx_如何解决Windows照片查看器无法显示此图片
  14. c 语言百度翻译软件,百度翻译api 实现简易微信翻译小程序
  15. 计算机老是重启进不了桌面,电脑无限重启进不桌面
  16. Dense biased networks with deep priori anatomy and hard region adaptation: Semi-supervised learning
  17. Dissect Eclipse Plugin Framework
  18. jsp 的ne 什么意思
  19. 【Spring教程】框架体系介绍
  20. 快速排序: 使用快速排序算法对数组进行排序

热门文章

  1. python程序设计实验配置_20181235 实验三《Python程序设计》实验报告
  2. python偏函数和高阶函数_Python高阶函数-偏函数
  3. 我爱Python的5个理由
  4. 开放源代码_您是否在开放源代码中看到了这些个性?
  5. 那一种笔记软件更好用_制作更好的面向用户软件的7种方法
  6. 着迷英语900句_开明的系统管理员如何让我着迷于Linux
  7. dreamhost 优惠码_DreamHost如何通过OpenStack重塑自己
  8. Dave和Gunnar采访Lauren Egts:Raspberry Pi,Scratch等
  9. (37)Gulp 文件清除
  10. JavaScript深度迭代遍历未知对象