Vue+Flask实现图片传输功能
作者:小周bb 发布时间:2024-05-21 10:15:34
标签:Vue,Flask,图片传输
本文实例为大家分享了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
来源:https://blog.csdn.net/aaaaaaaaaww12/article/details/121608648


猜你喜欢
- 之前写爬虫程序的时候,采用生产者和消费者的模式,利用Queue作为生产者进程和消费者进程之间的同步队列。执行程序时,总是秒退,加了断点也无法
- 我这里只讲几点有关于MySQL数据库安装后遇到的个别问题 我之前安装过MYSQL好像不用手动启动服务,具体也忘记了,但我上回给公司安装的那个
- 1.为模块nester创建文件夹nester,其中包含:nester.py(模块文件):"""这是"
- bootstrap-confirmation按钮提示组件,它类似于js里面confirm的功能,界面更加美观。介绍这个组件之前,可以先来看看
- 日志作为项目开发和运行中必备组件,python提供了内置的logging模块来完成这个工作;借助 TimedRotatingFileHand
- 可以说这个功能,在我理解了前面的“贪吃蛇”之后,实在是与刚开始想象的难度差了好多,当然是这种方式有取巧之嫌,终归是实现了功能,我们来进行分析
- 这篇文章主要介绍了python mqtt 客户端代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 需求:需求简单:但是感觉最后那部分遍历有意思:S型数组赋值,考虑到下标,简单题先实现个差不多的m = 5cols = 9rows = 4nu
- 本文实例讲述了PHP面向对象继承用法。分享给大家供大家参考,具体如下:继承先看两个类<?phpclass CdProduct { &n
- 本文实例讲述了python通过smpt发送邮件的方法。分享给大家供大家参考。具体实现方法如下:import smtplib, socketf
- 本文较为详细的讲述了Python中常用的模块,分享给大家便于大家查阅参考之用。具体如下:1.内置模块(不用import就可以直接使用)常用内
- 第一版,能实现,但最后发现文件的顺序改变了:import osdef reename(): nm=1 pathh="/home/h
- 目录mysql主从复制mysql主从复制的方式mysql主从复制的原理mysql的主从配置的具体实现方式1、 Master配置2、 Slav
- 用phpMyAdmin时在导入和导出MySQL5数据时,有一个SQL compatibility mode选项,其可选值为NONE、ANSI
- 方案有很多种,我这里简单说一下:1. into outfileSELECT * FROM mytable  
- 但凡有些事情重复时,我就在想怎么可以用程序来自动化。这里想分享如何每天给女友定时微信发送”晚安“,如果只是晚安,就略显单调,于是爬取金山词霸
- 前言: 当我们需要存储小数,并且有精度要求,比如存储金额时,通常会考虑使用DECIMAL字段类型,可能大部分同学只是对DECIMAL类型略有
- 一、VScode下载官网Download Visual Studio Code - Mac, Linux, Windows点击64 bit会
- 导语昨天看到有留言竟然说我是月更博主,我明明更新地这么勤快(心虚.jpg)。看吧,昨天刚更新过,今天又来更新了。今天还是带大家写个小游戏吧,
- 前面简单介绍了Python列表基本操作,这里再来简单讲述一下Python元组相关操作>>> dir(tuple) #查看元