You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中如何处理请求上传的.sclaris/.xml/.odt等非JSON文件?

在Flask中处理.sclaris/.xml/.odt等文件上传的实现方法

当然可以搞定!你之前用request.get_json()处理JSON数据,而文件上传属于multipart/form-data格式的请求,需要用Flask的request.files来获取上传的文件。下面我一步步给你讲清楚实现步骤:

一、Flask后端代码实现

首先写好接收文件的路由,这里给你一个完整的示例,包含文件校验、保存和内容处理的逻辑:

from flask import Flask, request
import os

app = Flask(__name__)

# 配置上传目录和最大文件大小(可选,这里设置为32MB)
app.config['UPLOAD_FOLDER'] = './uploads'
app.config['MAX_CONTENT_LENGTH'] = 32 * 1024 * 1024

# 确保上传目录存在,避免保存文件时报错
if not os.path.exists(app.config['UPLOAD_FOLDER']):
    os.makedirs(app.config['UPLOAD_FOLDER'])

@app.route('/upload', methods=['POST'])
def upload_file():
    # 获取上传的文件,这里的'file'是表单字段名,要和Insomnia里的设置对应
    uploaded_file = request.files.get('file')
    
    # 检查是否有文件被上传
    if not uploaded_file or uploaded_file.filename == '':
        return '请选择要上传的文件', 400
    
    # 验证文件后缀,只允许指定格式
    allowed_extensions = {'sclaris', 'xml', 'odt'}
    file_ext = uploaded_file.filename.rsplit('.', 1)[1].lower() if '.' in uploaded_file.filename else ''
    if file_ext not in allowed_extensions:
        return f'不支持的文件类型!仅允许.sclaris、.xml、.odt格式', 400
    
    # 保存文件到指定目录
    file_path = os.path.join(app.config['UPLOAD_FOLDER'], uploaded_file.filename)
    uploaded_file.save(file_path)
    
    # 如果需要直接处理文件内容(比如解析XML),可以这样读取
    # 注意:读取后如果还要保存,需要把文件指针移回开头
    # uploaded_file.seek(0)
    # content = uploaded_file.read().decode('utf-8')
    # 比如解析XML:
    # import xml.etree.ElementTree as ET
    # tree = ET.fromstring(content)
    
    return f'文件 {uploaded_file.filename} 上传并处理成功!', 200

if __name__ == '__main__':
    app.run(debug=True)

代码关键细节说明:

  • request.files.get('file'):通过表单字段名获取文件对象,这里的file要和你在Insomnia里设置的字段名完全一致
  • 文件后缀校验:避免用户上传不符合要求的文件,增强接口安全性
  • 上传目录预创建:防止保存文件时因为目录不存在抛出异常
  • 内容处理:如果不需要保存文件,直接读取内容解析即可,比如XML可以用内置的xml.etree.ElementTree,ODT可以用第三方库python-odf(需要先执行pip install python-odf安装)

二、Insomnia端发送文件的设置

打开Insomnia,按照以下步骤配置请求:

  • 新建一个POST请求,地址填写你的Flask路由(比如http://localhost:5000/upload)
  • 切换到Body标签,选择Form Multipart类型
  • 点击Add添加一个字段,键名设置为file(必须和Flask代码里的字段名一致),字段类型选择File
  • 点击右侧的文件选择按钮,选中你要上传的.sclaris/.xml/.odt文件
  • 最后点击发送按钮,就能把文件传到Flask后端了

三、额外注意事项

  • 生产环境不要开启debug=True,避免泄露敏感信息和安全风险
  • 如果需要处理大文件,记得调整MAX_CONTENT_LENGTH的数值,单位是字节
  • 对于.sclaris这类小众格式,需要根据其具体的文件规范来编写解析逻辑,如果有对应的Python库可以优先使用,没有的话可能需要自己解析文件内容

内容的提问来源于stack exchange,提问作者Cierniostwor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:47:45