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图表自适应的几种解决方案
Dec 04 Vue.js
在vue中动态修改css其中一个属性值操作
Dec 07 Vue.js
vue使用require.context实现动态注册路由
Dec 25 Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
基于vue的video播放器的实现示例
Feb 19 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
vue项目中的支付功能实现(微信支付和支付宝支付)
Feb 18 Vue.js
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
Vue2项目中对百度地图的封装使用详解
Jun 16 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
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
用PHP代码给图片加水印
2015/07/01 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
VUE写一个简单的表格实例
2019/08/06 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
Python 中的with关键字使用详解
2016/09/11 Python
python实现多张图片拼接成大图
2019/01/15 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
python psutil模块使用方法解析
2019/08/01 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
初中英语演讲稿
2014/04/29 职场文书
服务理念标语
2014/06/18 职场文书
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python