当前位置: 首页 > news >正文

python flask+vue实现前后端图片上传

python flask+vue实现前后端图片上传

vue代码如下:

<template><div><input type="file"  @change="handleFileChange"/><button @click="uploadFile">上传</button><br><img :src="imageUrl" v-if="imageUrl"></div>
</template><script>
import axios from "axios";export default {data() {return {imageUrl: '',};},methods: {handleFileChange(e) {this.file=e.target.files[0];const file = e.target.files[0];const reader = new FileReader();reader.readAsDataURL(file);reader.onload = () => {this.imageUrl = reader.result;this.uploadImage(file);};},uploadFile() {const formData = new FormData();formData.append('file', this.file);// 发送文件到后端axios.post('http://localhost:5000/upload', formData, {headers: {'Content-Type': 'multipart/form-data'}}).then(response => {console.log(response.data);// 在这里你可以处理上传成功的逻辑if ('error' in response.data) {alert(response.data.error);return}// 显示成功消息alert(response.data);}).catch(error => {console.error(error);// 在这里你可以处理上传失败的逻辑// 显示错误消息alert('文件上传失败');});}}
};
</script><style scoped>
/* Add your CSS styles here */
div {margin: 20px;
}input {margin-bottom: 10px;
}button {padding: 10px;background-color: #4caf50;color: white;border: none;border-radius: 4px;cursor: pointer;
}button:hover {background-color: #45a049;
}
</style>

flask后端代码如下:

from flask import Flask, request, jsonify
import os
from flask_cors import CORS  # 导入CORS模块# 文件存储的目录
UPLOAD_FOLDER = 'uploads'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER# 启用CORS
# CORS(app)
CORS(app, resources={r"/*": {"origins": "*"}})  # 允许所有来源# 设置文件上传大小限制为 16 MB
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024  # 16 MBdef allowed_file(filename):return '.' in filename and \filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS@app.route('/')
def index():return 'Hello World!'@app.route('/upload', methods=['POST'])
def upload_file():if 'file' not in request.files:return jsonify({'error': '上传的非图片'})file = request.files['file']if file.filename == '':return jsonify({'error': '没选择图片'})if file and allowed_file(file.filename):print(file)print(file.filename)filename = file.filenamefile.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))return jsonify({'message': '上传图片成功'})else:return jsonify({'error': '无效'})if __name__ == '__main__':app.run(debug=True, host='0.0.0.0', port=5000)

实现效果如下:在这里插入图片描述

然后会在我们后端代码工作目录下保存图片。

http://www.lryc.cn/news/265013.html

相关文章:

  • centos7安装开源日志系统graylog5.1.2
  • 5G+云渲染技术:将如何快速推进XR和元宇宙?
  • 【leetcode234】回文链表Java代码讲解
  • 指标体系构建-02-从0开始,梳理数据指标体系
  • 高速视频采集卡设计方案:620-基于PCIe的高速视频采集卡
  • MyBatis:动态 SQL 标签
  • 福建农林大学 html +css + JavaScript 期末复习 -- 保姆级
  • 推箱子小游戏
  • Spring简介
  • 万德高科携手航天科技AIRIOT打造智慧能碳管理平台, 助力碳达峰碳中和
  • 金融软件开发的 4 大挑战
  • oppo 手机刷机流程
  • SQL---数据抽样
  • C 库函数 - strxfrm()
  • 选型前必看,CRM系统在线演示为什么重要?
  • 微软官宣放出一个「小模型」,仅2.7B参数,击败Llama2和Gemini Nano 2
  • 成为一名FPGA工程师:面试题与经验分享
  • 关于“Python”的核心知识点整理大全35
  • C++ opencv RGB三通道提升亮度
  • TCAX特效字幕保姆入门教程+效果演示+软件源码自取
  • 【C语言】自定义类型:结构体深入解析(二)结构体内存对齐宏offsetof计算偏移量结构体传参
  • 活动回顾 (上) | 2023 Meet TVM 系列活动完美收官
  • JMeter常见配置及常见问题修改
  • 描述一个bug及定义bug的级别
  • Java项目-瑞吉外卖项目优化Day3
  • 测试理论知识四:大型软件的测试技巧——单元测试
  • 安防监控系统/磁盘阵列/视频监控EasyCVR平台微信推送步骤大公开
  • 算法与数据结构--特殊有序集的线性时间排序算法
  • windows 动态库和静态库 介绍
  • 微软官方镜像下载大全(windows iso 官方镜像)