excel表格通过前端fetch上传至后端flask处理流程示例

前端网页index.html代码:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

        <input type="file" name="file" accept=".xlsx,.xls">
        <input type="submit" value="上传" onclick="upload()">

        <script>
            function upload(){
                var file = document.querySelector('input[name="file"]').files[0];
                if (!file) {
                    alert('请选择文件excel文件');
                    return;
                }
                var formData = new FormData();
                formData.append('file', file);
                fetch('/upload', {
                    method: 'POST',
                    body: formData
                }).then(res => res.text()).then(data=>{
                    let filename=JSON.parse(data).filename;
                    let filedata=JSON.parse(data).filedata;
                    console.log(filename+" 文件已经上传成功了!");
                    console.log(filedata);
                    alert(filename+" 文件已经上传成功了!");
                }).catch(err=>{
                    console.log(err);
                    console.log('上传失败'+err);
                    alert('上传失败'+err);

                });
            }
        </script>
</body>
</html> 

后端main.py代码:

python 复制代码
from flask import Flask, request, jsonify,render_template
import pandas as pd

app = Flask(__name__,template_folder='')

#前端显示文件上传界面:
@app.route('/')
def index():
    return render_template('index.html')

#后端接收处理前端传来的文件:
@app.route('/upload',methods=['POST'])
def upload():
    # 接收文件
    file = request.files['file']
    # 保存文件
    #file.save(file.filename)
    # 读取文件流,无需保存文件
    df=pd.read_excel(file.stream)
    #遍历excel文件的每一行
    #待插入数据库的数据
    params=[]
    for index, row in df.iterrows():
        print(row[0], row[1])
        #获取excel文件的第1列和第2列数据,标题行除外
        params.append((row[0],row[1]))
    #将结果以json格式返回
    res=jsonify({'filename': file.filename,'filedata':params})
    
    # 2XX 成功
    # 3XX 重定向
    # 4XX 客户端错误
    # 5XX 服务器错误
    # 响应状态码200代表HTTP OK,表示服务器已成功处理了请求并返回了请求的资源。
    
    return res,200

if __name__ == '__main__':
    app.run(debug=True)
相关推荐
moshuying2 小时前
别让AI焦虑,偷走你本该有的底气
前端·人工智能
GIS之路4 小时前
ArcPy,一个基于 Python 的 GIS 开发库简介
前端
可夫小子5 小时前
OpenClaw基础-为什么会有两个端口
前端
喝拿铁写前端5 小时前
Dify 构建 FE 工作流:前端团队可复用 AI 工作流实战
前端·人工智能
用户8356290780516 小时前
无需 Office:Python 批量转换 PPT 为图片
后端·python
喝咖啡的女孩6 小时前
React 合成事件系统
前端
从文处安6 小时前
「九九八十一难」组合式函数到底有什么用?
前端·vue.js
用户5962585736066 小时前
戴上AI眼镜逛花市——感受不一样的体验
前端
yuki_uix6 小时前
Props、Context、EventBus、状态管理:组件通信方案选择指南
前端·javascript·react.js
老板我改不动了6 小时前
前端面试复习指南【代码演示多多版】之——HTML
前端