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设计一个日历表
Dec 03 Vue.js
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
vue+openlayers绘制省市边界线
Dec 24 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
Vue多选列表组件深入详解
Mar 02 Vue.js
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
Vue Element plus使用方法梳理
Dec 24 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&amp;&amp;mysql)三
2006/10/09 PHP
php 显示指定路径下的图片
2009/10/29 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
javascript实现的listview效果
2007/04/28 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
Python中的面向对象编程详解(下)
2015/04/13 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python xlwt模块使用代码实例
2020/06/10 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
程序员机试试题汇总
2012/03/07 面试题
C#可否对内存进行直接的操作
2015/02/26 面试题
大学生军训自我评价分享
2013/11/09 职场文书
公司合作意向书
2014/04/01 职场文书
好听的队名和口号
2014/06/09 职场文书
调研座谈会发言材料
2014/08/23 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
中学总务处工作总结
2015/08/12 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript