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

如何在.NET MAUI Blazor中读写文件并获取对应访问URL的本地存储路径

Windows平台.NET MAUI Blazor实现可写入音频目录与Web路径映射方案

1. 获取应用专属可写入本地路径

Windows平台下无需额外申请存储权限,直接使用MAUI封装的应用专属数据目录即可,该目录完全开放读写权限:

// 获取应用专属可写目录,拼接自定义的音频存储子目录
var audioStoragePath = Path.Combine(FileSystem.Current.AppDataDirectory, "custom_audios");
// 确保目录存在
if (!Directory.Exists(audioStoragePath))
{
    Directory.CreateDirectory(audioStoragePath);
}

FileSystem.AppDataDirectory对应Windows系统下的路径为C:\Users\{用户名}\AppData\Local\Packages\{应用包标识}\LocalState,属于应用私有目录,读写无权限限制。

2. 配置本地目录到Web虚拟路径的映射

要让Blazor WebView能通过/xxx类的URL访问本地路径的文件,需要在MAUI启动配置中添加物理文件提供器映射:
首先在MauiProgram.cs中添加对应引用,然后修改服务注册逻辑:

using Microsoft.AspNetCore.Components.WebView;
using Microsoft.Extensions.FileProviders;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

        builder.Services.AddMauiBlazorWebView();
        // 配置Blazor WebView的静态资源映射
        builder.Services.Configure<BlazorWebViewOptions>(options =>
        {
            var audioDir = Path.Combine(FileSystem.Current.AppDataDirectory, "custom_audios");
            Directory.CreateDirectory(audioDir);
            // 将本地音频目录映射到Web端的 /audios 虚拟路径
            options.FileProviders.Add(new PhysicalFileProvider(audioDir), "/audios");
        });

#if DEBUG
        builder.Services.AddBlazorWebViewDeveloperTools();
        builder.Logging.AddDebug();
#endif

        return builder.Build();
    }
}

映射完成后,本地custom_audios目录下的所有文件,都可以通过/audios/文件名的路径在WebView中访问,匹配你需要的类https://0.0.0.0/..格式的访问链接。

3. 写入音频与前端调用示例

写入音频文件示例

// 假设你已经获取到音频的字节流/文件流
byte[] audioBytes = await GetYourAudioContentAsync();
var targetFilePath = Path.Combine(audioStoragePath, "demo.mp3");
await File.WriteAllBytesAsync(targetFilePath, audioBytes);

前端Audio标签调用

直接使用映射后的虚拟路径即可正常播放:

<audio controls src="/audios/demo.mp3">
    您的浏览器不支持音频播放
</audio>

注意事项

  • 该目录为应用私有目录,应用卸载时会同步删除所有存储的音频文件
  • 无需额外申请系统存储权限,不会触发权限申请弹窗
  • 虚拟路径可根据需求自定义修改,只需保持映射配置和前端调用路径一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:24:04