本文介绍了如何从Blazor服务器端下载内存文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有一种下载文件的方法,该文件是在 Blazor 服务器端中在内存中动态生成的 而不需要将其存储在文件系统上?

Is there a way to download a file, generated dynamically in memory in Blazor Server Side without need to store it on a filesystem?

推荐答案

解决方案是在Blazor服务器端应用程序中添加 Web Api contoller.

The solution was in adding Web Api contoller into Blazor server side app.

  1. Controllers/DownloadController.cs 控制器添加到Blazor应用程序的根目录:
  1. Add Controllers/DownloadController.cs controller to the root of Blazor app:
[ApiController, Route("api/[controller]")]
    public class DownloadController : ControllerBase {

        [HttpGet, Route("{name}")]
        public ActionResult Get(string name) {

            var buffer = Encoding.UTF8.GetBytes("Hello! Content is here.");
            var stream = new MemoryStream(buffer);
            //var stream = new FileStream(filename);

            var result = new FileStreamResult(stream, "text/plain");
            result.FileDownloadName = "test.txt";
            return result;
        }


    }
  1. 调整Blazor应用程序的 Startup.cs 以支持控制器路由:
  1. Adjust Startup.cs of the Blazor app to support controllers routing:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {

            ...

            app.UseRouting();

            app.UseEndpoints(endpoints => {

                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller}/{action}");

                endpoints.MapControllers();

                endpoints.MapBlazorHub();
                endpoints.MapFallbackToPage("/_Host");

            });

        }

这篇关于如何从Blazor服务器端下载内存文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-25 17:04