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 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
深入了解Vue3模板编译原理
Nov 19 Vue.js
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
详解Vue中的自定义指令
Dec 07 Vue.js
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
VUE实现吸底按钮
Mar 04 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
vue+iview实现手机号分段输入框
Mar 25 Vue.js
vue组件vue-esign实现电子签名
Apr 21 Vue.js
vue 自定义组件添加原生事件
Apr 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 无限分类的树类代码
2009/12/03 PHP
php define的第二个参数使用方法
2013/11/04 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
js判断是否是手机页面
2017/03/17 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
Less 安装及基本用法
2018/05/05 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
python实现用户答题功能
2018/01/17 Python
selenium+python实现自动登录脚本
2018/04/22 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
全球精选男装和家居用品:Article
2020/04/13 全球购物
论文指导教师评语
2014/04/28 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
房屋维修申请报告
2015/05/18 职场文书
高中地理教学反思
2016/02/19 职场文书
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android