2

我正在开发 Blazor 应用程序,但无法将文件存储在 wwwroot/img 中。谁能帮忙。想了解这种行为,我可以在控制台上看到成功消息(文件已复制。)但无法在文件夹中看到文件。

将尝试其他替代方案,但发布它以了解为什么即使在成功执行文件之后也没有存储。

剃须刀组件

    <InputFile OnChange="HandleFileSelected" />

代码部分

    private async Task<bool> HandleFileSelected(IFileListEntry[] files)
    {
        try
        {
            IFileListEntry ufile = files.FirstOrDefault();

            if (ufile != null && ufile.Size > 0)
            {
                var fileName = Path.GetFileName(ufile.Name);
                var filePath = @"ProjectPath\wwwroot\img\"+ fileName; //ProjectPath -- path here

                using (var fileStream = new FileStream(filePath, FileMode.Create))
                {
                    await ufile.Data.CopyToAsync(fileStream);
                    Console.WriteLine("File copied.");
                }
                return true;
            }
            return false;
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error "+ ex.Message);
            return false;
        }
    }

控制台消息

WASM:文件已复制。//物理上没有文件复制到路径。

4

1 回答 1

3

因为 Blazor WASM 就像任何其他 SPA 应用程序一样。该应用程序不在服务器上运行,而是在客户端 Web 浏览器中运行。这就是文件没有保存在服务器上的原因。如果要将文件保存到服务器,则需要通过 API 之类的方式与服务器通信。

以下是有关如何使用 WASM 上传文件的示例: https ://remibou.github.io/Upload-file-with-Blazor/

于 2020-04-03T11:25:58.597 回答