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)
相关推荐
夜郎king17 分钟前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
亓才孓32 分钟前
[Class类的应用]反射的理解
开发语言·python
小镇敲码人41 分钟前
深入剖析华为CANN框架下的Ops-CV仓库:从入门到实战指南
c++·python·华为·cann
摘星编程1 小时前
深入理解CANN ops-nn BatchNormalization算子:训练加速的关键技术
python
魔芋红茶1 小时前
Python 项目版本控制
开发语言·python
lili-felicity1 小时前
CANN批处理优化技巧:从动态批处理到流水线并行
人工智能·python
一个有梦有戏的人1 小时前
Python3基础:进阶基础,筑牢编程底层能力
后端·python
夏幻灵1 小时前
HTML5里最常用的十大标签
前端·html·html5
摘星编程1 小时前
解析CANN ops-nn中的Transpose算子:张量维度变换的高效实现
python
Mr Xu_2 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js