赞
踩
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 MB def 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.filename file.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)
实现效果如下:
然后会在我们后端代码工作目录下保存图片。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。