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+iview实现分页及查询功能
Nov 17 Vue.js
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
Vue如何实现验证码输入交互
Dec 07 Vue.js
vue中如何添加百度统计代码
Dec 19 Vue.js
Vue ​v-model相关知识总结
Jan 28 Vue.js
Vue常用API、高级API的相关总结
Feb 02 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
Vue + iView实现Excel上传功能的完整代码
Jun 22 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
星际玩家的三大定律
2020/03/04 星际争霸
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
浅谈Django REST Framework限速
2017/12/12 Python
基于Python实现用户管理系统
2019/02/26 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
python实现名片管理器的示例代码
2019/12/17 Python
Python识别html主要文本框过程解析
2020/02/18 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
用python发送微信消息
2020/12/21 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
毕业生个人的求职信范文
2013/12/03 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
项目合作协议书
2014/04/16 职场文书
大学班级计划书
2014/04/29 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
生日答谢词
2015/01/05 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书