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)
相关推荐
满怀冰雪19 分钟前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
FreeTinker6 小时前
HTML本地存储技术解析:localStorage与sessionStorage的原理、差异与应用场景
前端·html
qq_452396236 小时前
第十二篇:《全链路监控与可观测性:前端错误追踪与性能分析》
前端
DeepVisionary6 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
阡之尘埃6 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰6 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
cvcode_study7 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
wangruofeng7 小时前
Phosphor Icons 官网源码拆解:URL 即存储、水波动画与 7362 Star 图标库的架构实践
前端·架构·github
BigTopOne7 小时前
WebRTC Native / Android 开发学习资源整理
前端
excel8 小时前
nuxt 3 升级 nuxt 4 报错之 hasInjectionContext
前端