Vue+Flask实现图片传输功能


Posted in Vue.js onApril 01, 2022

本文实例为大家分享了Vue+Flask实现图片传输功能的具体代码,供大家参考,具体内容如下

完整流程:

1.图片转为formdata 传输到后端
2.后端接收后,确定文件后缀名无误,修改文件名并保存到固定的路径中
3.前端请求图片
4.后端根据图片名字返回图片数据流
5.前端将数据流处理,转为图片

1.Vue上传

<template>
    <div>
        <input type="file" class="file" id ='file'> 
        <input type="submit" @click="uploadClick">
    </div>
</template>
<script>
export default {
   
    data () {
        return {}
    },
    methods:{
        uploadClick(){
            console.log(document.getElementById('file').files[0]);
            var formData = new window.FormData() 
            formData.append('file',document.getElementById('file').files[0])
            upload(formData)
            
        }   
    }
}
</script>

//这是封装的请求
export const upload = (file) => {
  return request({
    url: '/api/uavprp/upload',
    data: file,
    method: 'post',
    headers: { 
      'Content-Type': 'multipart/form-data'
     },
  })
}

2.Flask接收

#请求中获取到上传的图片
a = request.files.get('file')
#限制文件后缀名必须为图片的类型
allowed_filename = set(['png', 'jpg', 'JPG', 'PNG'])
isallowed = '.' in filename and filename.rsplit('.', 1)[1] in allowed_filename
path = basedir + "/image/"  #这里的image是自己创建的保存图片文件夹路径
img_name = change_file_name(a.filename,ImgID)#这是我自己定义的一个方法 为了修改图片的名字为随机生成的唯一ID,同时不修改后缀名
file_path = path + img_name#完整的保存路径加图片名
a.save(file_path)#保存

3.Vue请求图片并转换返回的数据流为图片展示

<template>
    <div>
      <img :src="ferUrl"/>
    </div>
</template>
<script>
export default {
   
    data () {
        return {
            imgUrl: "",
        }
    },
    created(){
        getImg("ImgNXTIP298.jpg").then((res) => {
        this.imgUrl = window.URL.createObjectURL(res.data);//这里请求接收的一定是Blod类型数据
        console.log(this.imgUrl);
      });
    }
}
</script>


//封装的图片请求
export const getImg = (imgID) => {
  return request({
    url: '/api/ferchoosen/getFerImg',
    method: 'get',
    responseType:"blob",
    params: {
      imgID
    }
  })
}

4.Flask接收前端请求返回图片数据流

imgID = request.args["imgID"]
    if imgID == None:
        return output(msg="该图片不存在")
    path = basedir + "/image/"
    image_data = open(os.path.join(path, '%s' % imgID), "rb").read()
    response = make_response(image_data)
    response.headers['Content-Type'] = 'image/png'#返回的内容类型必须修改
    return response

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
梳理一下vue中的生命周期
Dec 30 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
Vue全局事件总线你了解吗
Feb 24 Vue.js
Vue2.0搭建脚手架
Mar 13 Vue.js
vue动态绑定style样式
Apr 20 Vue.js
在vue中import()语法不能传入变量的问题及解决
Apr 01 #Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 #Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 #Vue.js
vue ref如何获取子组件属性值
Mar 31 #Vue.js
vue如何使用模拟的json数据查看效果
vue+iview实现手机号分段输入框
Mar 25 #Vue.js
Vue3中toRef与toRefs的区别
Mar 24 #Vue.js
You might like
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
Python性能分析工具Profile使用实例
2019/11/19 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
什么是聚集索引和非聚集索引
2012/01/17 面试题
房地产管理毕业生自荐信
2013/11/04 职场文书
毕业生自我鉴定实例
2014/01/21 职场文书
政协调研汇报材料
2014/08/15 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS