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 tags 创建缓存导航的过程实现
Dec 03 Vue.js
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
vue中三级导航的菜单权限控制
Mar 31 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
浅谈Vue的computed计算属性
Mar 21 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
php str_pad 函数用法简介
2009/07/11 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
JS定时器实例
2013/04/17 Javascript
javascript动态添加删除tabs标签的方法
2015/07/06 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
Python画图学习入门教程
2016/07/01 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
五种Python转义表示法
2020/11/27 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
如何写一份好的英文求职信
2014/03/19 职场文书
热情服务标语
2014/10/07 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
销售工作决心书
2015/02/04 职场文书
2015年新学期寄语
2015/02/26 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书