NEXT Vance_19 2023-02-02 14:59 采纳率: 100%
浏览 147
已结题

用flask框架接收前端上传的文本文件后怎么读取该文件

我在做一个可视化的网站,需要用户把数据通过前端传到后端(flask),后端对该文件(.txt,.json)进行读取等一系列操作。
但是server.py中的filename无法被调用,文件名称是个变量,open方法的filepath就不知道怎么办了,还有我是小白,后端数据处理的操作我想放在另外一个python程序中进行,但是我在新文件中导包发现filename无法传过来。

@app.route('/upload', methods=['GET','POST'])
def upload(filename):
    upload_file = request.files['abc']
    if upload_file and allowed_file(upload_file.filename):
        filename = secure_filename(upload_file.filename)
        print(filename)
        upload_file.save(os.path.join(app.root_path, app.config['UPLOAD_FOLDER'], filename))
        return filename
    else:
         return 'failed'

  • 写回答

3条回答 默认 最新

  • Eliot5566 2023-02-02 18:26
    关注

    下面是代码:

    @app.route('/upload', methods=['GET','POST'])
    def upload():
        if request.method == 'POST':
            upload_file = request.files['abc']
            if upload_file and allowed_file(upload_file.filename):
                filename = secure_filename(upload_file.filename)
                file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
                upload_file.save(file_path)
                # 读取文件内容
                with open(file_path, 'r') as f:
                    file_content = f.read()
                    # 处理文件内容
                    # ...
                    return 'success'
            else:
                return 'failed'
        return '''
        <!doctype html>
        <html>
        <head>
            <title>Upload new File</title>
        </head>
        <body>
            <h1>Upload new File</h1>
            <form action="" method=post enctype=multipart/form-data>
                <p><input type=file name=abc>
                   <input type=submit value=Upload>
            </form>
        </body>
        </html>
        '''
    
    
    

    在 upload 函数中,首先判断是否为 POST 请求,如果是,则从 request.files 字典中获取文件对象(此处的 key 为 abc),接着使用 secure_filename 函数处理文件名,生成文件路径,并使用 save 方法保存到服务器端。最后,使用 Python 中的 open 函数读取文件内容,进行处理。

    如果想要在另一个 Python 程序中处理文件内容,可以使用 Flask 提供的 url_for 函数生成文件路径,在新程序中导入 Flask 的应用对象,使用该应用对象获取路径信息。代码示例如下:

    如果想在另一个 Python 程序中处理该文件,可以通过 Flask 提供的 url_for 函数生成文件的 URL,并在新程序中使用 requests 库读取文件内容。代码示例如下:

    server.py
    from flask import Flask, request, url_for
    import os

    app = Flask(name)
    app.config['UPLOAD_FOLDER'] = 'uploads'

    @app.route('/upload', methods=['GET','POST'])
    def upload():
    upload_file = request.files['abc']
    if upload_file and allowed_file(upload_file.filename):
    filename = secure_filename(upload_file.filename)
    file_path = os.path.join(app.root_path, app.config['UPLOAD_FOLDER'], filename)
    upload_file.save(file_path)
    return url_for('get_file', filename=filename)
    else:
    return 'failed'

    @app.route('/uploads/')
    def get_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

    new_program.py
    import requests

    url = 'http://localhost:5000/uploads/' + filename
    res = requests.get(url)
    file_content = res.content

    对 file_content 进行处理,比如读取其中的内容,写入到另一个文件等

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月12日
  • 已采纳回答 2月4日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器