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

Flask中使用webkitdirectory上传文件夹无法定位指定文件求助

修复webkitdirectory上传文件夹后Flask无法找到目标JSON文件的问题

问题诊断

文件名被拆分为单个字符,说明后端代码错误地将文件对象的文件名当成字符串遍历,而非处理上传的文件列表。常见原因是直接遍历request.files中单个文件的文件名字符,而非通过getlist()获取所有上传文件并遍历文件对象。

修复步骤

1. 确认前端HTML代码正确性

确保上传input标签正确配置webkitdirectory和multiple属性,且name属性唯一:

<input type="file" name="uploaded_files" webkitdirectory multiple>

2. 修正Flask后端文件处理逻辑

使用request.files.getlist()获取所有上传的文件对象,遍历文件对象而非文件名字符:

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def process_upload():
    # 获取所有上传的文件列表
    uploaded_files = request.files.getlist('uploaded_files')
    target_file = None

    for file in uploaded_files:
        # 注意:webkitdirectory上传的文件名会包含相对路径,用endswith匹配更可靠
        if file.filename.endswith('your_search_history.json'):
            target_file = file
            break

    if not target_file:
        return "your_search_history.json not found", 404
    
    # 读取目标文件内容(示例)
    file_content = target_file.read()
    # 此处添加生成图表的逻辑...

    return "目标文件已找到并处理完成"

3. 排查常见错误点

  • 避免直接遍历文件名字符串:不要写for char in request.files['uploaded_files'].filename,这会逐个遍历文件名的字符。
  • 保持前后端name属性一致:前端input的name值需与后端getlist()中的参数完全匹配。
  • 处理带路径的文件名:webkitdirectory上传时,文件名会包含文件夹内的相对路径(如docs/your_search_history.json),使用endswith()而非直接等于文件名来匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:37:13