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

5. 前后端实现文件上传与解析

1. 说明

在实际开发中,比较常见的一个功能是需要在前端页面中选择系统中的某个文件上传到服务器中进行解析,解析后的文件内容可以用来在服务器中当作参数,或者传递给其它组件使用,或者需要存储到数据库中。所以本文就提供一种方式来实现这样的功能。

2. 具体步骤

主要需要完成两步骤:一是前端实现文件上传,二是后端实现文件接收与保存
说明:前端框架是vue2,具体框架代码可以参考前面的系列文章

2.1 前端文件上传

首先,前端负责文件上传的控件直接使用input标签即可,然后在提供一个文件上传的按钮,页面简单布局代码如下:

<template>
	<div>
		<input class=“inputfile” type=“file” id=“testuploadfile”>
		<el-button @click=“uploadFile” type=“success” plain></el-button>
	</div>
</template>

之后,就是实现上面为button按钮绑定的触发事件uploadFile,具体代码如下:

async uploadFile()
{
	//先找到input控件,获取其上传的文件
	const fileInput = document.getElementById(‘testuploadfile’);
	if(!fileInput.files.length)
	{
		alert(‘请选择文件’);
		return;
	}
	//获取文件
	const file = fileInput.files[0];
	if(file)
	{
		//创建一个表单,用于上传
		const formData = new formData();
		formData.append(‘file’,file);
		//尝试调用后端接口进行上传
		try{
			axios.post(/api/parseFile’, formData, {
				headers:{
					‘Content-Type’:’multiparty/form-data’
				}
			}).then(response => {
				if(response.data.status === ‘success’)
				{
					alert(‘解析成功’);
				}else{
					alert(‘解析失败’);
				}
			});
		}
		catch(error)
		{
			if(axios.isCancel(error)){
				console.log(‘upload canceled’, error.message);
			}else{
				console.log(‘Error upload file:, error);
			}
		}
	}
}
2.2 后端文件接收

本文中后端设置的对应接口,其功能相对简单,读者可以根据自身业务需求在此基础上进行扩展,比如对接收到的文件内容尽心读取更改什么的,本文中只是为了实现前后端文件的上传与接收,所以此处的代码只时对文件进行了保存,具体代码如下:

from flask import Flask, request, jsonify
from flask_cors import CORS
from werkzeug.utility import secure_filename
import os

app = Flask(__name__)
CORS(app)

@app.route(/parseFile’, methods=[‘POST’])
def parseFile():
	# 使用request接收文件
	file = request.files[file]	# 注意:这里的名称‘file’,要和前端formData中填写的标签保持一致formData.append(‘file’, file)
	# 保存文件
	if file:
		# 获取文件名
		filename = secure_filename(file.filename)
		# 保存文件到指定路径
		file_dir = os.path.join(./files/,’test’)
		if not os.path.exists(file_dir):
			os.makedirs(file_dir)
		file_path = os.path.join(file_dir, filename)
		file.save(file_path)
	return jsonify({
			‘status’:’success’,
			’message’:’接收文件{filename}成功’,
		}),200

if __name__ == ‘__main__’:
	app.run(host=0.0.0.0,debug=True)

结束

相关文章:

  • linux 命令 cat
  • 【社交+陪玩服务】全场景陪玩系统源码 小程序+H5双端 社群互动+即时点单+搭建教程
  • 2025年四川烟草工业计算机岗位备考详细内容
  • 1.1 双指针专题:移动零(easy)
  • 深入解析 Linux 的 traceroute 命令
  • 解决asp.net mvc发布到iis下安全问题
  • 27. Harmonyos Next仿uv-ui 组件NumberBox 步进器组件禁用状态
  • C# 实现 AI SSE (Server-Sent Events)接口方式输出(对接AI模型API)
  • 无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战
  • 使用VS Code remote ssh进行远程开发的笔记
  • UI自动化:Selenium常规的页面元素定位方法
  • golang从入门到做牛马:第十二篇-Go语言数组:数据的“有序集合”
  • LangChain使用总结-第二章
  • webshell一些上传心得
  • 【Java 面试 八股文】计算机网络篇
  • 大模型工具Ollama存在安全风险
  • LeetCode - #225 使用两个队列实现 LIFO 栈
  • Windows中在VSCode/Cursor上通过CMake或launch文件配置CUDA编程环境
  • react使用拖拽,缩放组件,采用react-rnd解决 -完整版
  • gbase8s rss集群通信流程
  • 新华时评:让医德医风建设为健康中国护航
  • 申论|空间更新结合“青银共生”,助力青年发展型城区建设
  • “养胃骗局”大公开,真正有用的方法究竟是?
  • 巴菲特谈卸任CEO:开始偶尔失去平衡,但仍然保持敏锐的头脑,仍打算继续工作
  • 陕西宁强县委书记李宽任汉中市副市长
  • 北京13日冰雹过后,已受理各险种报案近3万件