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

Blazor WebAssembly中如何创建本地目录?

Blazor WebAssembly 本地创建文件夹的解决方案

你遇到的问题核心在于:Blazor WebAssembly 运行在浏览器的沙箱环境中,没有直接访问本地文件系统的权限。你使用的System.IO.Directory.CreateDirectory是针对服务器端或桌面应用的API,在浏览器环境下无法执行本地文件操作,所以点击按钮没有任何反应。

要实现让用户在本地创建文件夹的功能,必须借助浏览器提供的File System Access API,通过Blazor的JS互操作来调用这个原生API。以下是具体实现步骤:

步骤1:编写Razor组件代码

@page "/create-local-folder"
@inject IJSRuntime JSRuntime

<button @onclick="CreateLocalFolder">创建本地文件夹</button>

@code {
    private async Task CreateLocalFolder()
    {
        try
        {
            // 调用自定义JS方法触发文件夹创建流程
            await JSRuntime.InvokeVoidAsync("createLocalFolder");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"创建失败:{ex.Message}");
        }
    }
}

步骤2:添加JS工具函数

在wwwroot目录下新建js文件夹,创建file-operations.js文件,内容如下:

async function createLocalFolder() {
    try {
        // 弹出文件夹选择器,让用户选择要创建子文件夹的父目录
        const parentDirHandle = await window.showDirectoryPicker();
        
        // 在选中的目录下创建名为TestDir的新文件夹
        await parentDirHandle.getDirectoryHandle("TestDir", { create: true });
        
        alert("文件夹创建成功!");
    } catch (err) {
        // 用户取消操作或权限不足时触发
        if (err.name !== 'AbortError') {
            console.error(`操作错误:${err.message}`);
        }
    }
}

步骤3:在index.html中引入JS文件

在wwwroot/index.html的<body>标签末尾添加JS引用:

<script src="js/file-operations.js"></script>

关键说明

  • 这个流程必须经过用户授权:浏览器会弹出对话框让用户选择父文件夹,只有用户确认后才能创建子文件夹,这是浏览器安全机制的硬性要求,无法绕过
  • 该API支持Chrome、Edge、Firefox等现代主流浏览器,如需兼容旧浏览器,需要额外做降级处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:27:15