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)
相关推荐
Sirius.z2 小时前
第R6周:LSTM实现糖尿病探索与预测
python
名字还没想好☜3 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
·薯条大王3 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
用户938515635073 小时前
从零在浏览器里跑 DeepSeek-R1:WebGPU + Transformer.js 全链路实战
前端·设计模式·typescript
CodeSheep4 小时前
稚晖君公司人事大变动,来了!
前端·后端·程序员
鱼樱前端4 小时前
用 AI 做内容变收入
前端·人工智能·ai编程
Dxy12393102164 小时前
Python 如何使用 MySQL 的事务
python·mysql
浮生望4 小时前
React + TypeScript 组件设计进阶:从类型约束到无状态组件的三次进化
前端
90后的晨仔4 小时前
Mac 开发 uni-app 终极方案:让安卓模拟器彻底脱离 Android Studio 独立运行
前端·vue.js
90后的晨仔5 小时前
别再搞混了!uni-app 中 node_modules 和 uni_modules 到底是什么关系?
前端