Existe-t-il un moyen de télécharger un fichier, généré dynamiquement en mémoire dans Blazor Server Side sans avoir besoin de le stocker sur un système de fichiers?
La solution consistait à ajouter Web Api contoller dans l'application côté serveur Blazor.
Controllers/DownloadController.cs
contrôleur à la racine de l'application Blazor:[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;
}
}
Startup.cs
de l'application Blazor pour prendre en charge le routage des contrôleurs: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");
});
}