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

Flask应用文件保存失败:PermissionError [Errno 13]权限拒绝问题求助

解决Flask上传文件时的PermissionError [Errno 13]问题

嘿,我来帮你搞定这个权限错误!先看你的报错细节——你试图写入的是D:/Web_Demo/static/这个文件夹本身,而不是具体的文件,这才是触发错误的核心原因之一,再结合Windows的权限设置,我们分两步解决:

第一步:修复代码逻辑(最关键的前置步骤)

你当前的代码只检查了request.files是否存在,但用户点击上传按钮却没选择文件时,request.files["data"]依然会存在,只是file.filename是空字符串。这时候secure_filename(file.filename)会返回空,os.path.join之后就变成了static文件夹的路径,调用file.save()时就会尝试把文件写入文件夹(而不是文件),直接触发权限拒绝。

修改后的代码会先检查是否真的有文件上传:

import os
from flask import Flask, request, redirect, render_template
from werkzeug.utils import secure_filename

app = Flask(__name__)
app.config["UPLOAD_FOLDER"]= 'D:/Web_Demo/static/'

@app.route('/analysis.html',methods=['GET', 'POST'])
def analysis():
    if request.method == "POST":
        # 用get方法避免键不存在的错误,同时检查文件和文件名是否有效
        file = request.files.get("data")
        if file and file.filename.strip():
            filename = secure_filename(file.filename)
            # 拼接完整的文件保存路径
            save_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
            file.save(save_path)
            return redirect(request.url)
        # 如果没选文件,返回带提示的页面
        return render_template('analysis.html', error="请先选择要上传的文件")
    return render_template('analysis.html')

第二步:设置Windows文件夹写入权限

即使修复了代码,你可能还需要确保static文件夹允许当前用户写入:

  • 找到D:/Web_Demo/static/文件夹,右键点击 → 属性 → 切换到安全选项卡
  • 点击编辑按钮,在弹出的权限窗口中,找到你当前登录的用户账户(比如Utsav Dutta)
  • 在权限列表里,勾选写入权限,然后依次点击应用和确定保存设置

如果还是遇到权限问题,尝试右键点击Sublime Text,选择以管理员身份运行,再打开你的Flask项目运行代码——管理员权限会让Python进程获得足够的写入权限。

注意:Linux/macOS的sudo命令在Windows下不适用,所以不用尝试类似sudo chmod 775的操作,用上面的图形界面操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:38:58