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.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
Vue深入理解插槽slot的使用
Aug 05 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高级编程实例:编写守护进程
2014/09/02 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
python实现根据月份和日期得到星座的方法
2015/03/27 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
python实现维吉尼亚加密法
2019/03/20 Python
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
Java servlet面试题
2012/03/04 面试题
护理专业自荐信
2013/12/03 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
十八大感想感言
2014/02/10 职场文书
关于环保的演讲稿
2014/05/10 职场文书
工作所在部门证明
2014/09/21 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
生产实习心得体会范文
2016/01/22 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python