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+element-ui的项目中封装dialog组件
Dec 11 Vue.js
vue+element实现动态加载表单
Dec 13 Vue.js
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
Vue的生命周期一起来看看
Feb 24 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
vue 数字翻牌器动态加载数据
Apr 20 Vue.js
vue 自定义组件添加原生事件
Apr 21 Vue.js
Vue组件化(ref,props, mixin,.插件)详解
May 15 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程序中的常见漏洞进行攻击
2006/10/09 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
php查询及多条件查询
2017/02/26 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
python生成词云的实现方法(推荐)
2017/06/13 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
详解Python中的四种队列
2018/05/21 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
幼儿教师演讲稿
2014/05/06 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
环境卫生标语
2014/06/09 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技