【问题标题】:How to download a .msg File returned from Controller in razor file in client如何在客户端的剃须刀文件中下载从控制器返回的 .msg 文件
【发布时间】:2021-12-03 15:47:45
【问题描述】:

我有一个控制器,它有一个返回 .msg 文件格式的函数:

return File(emailOutput.ToArray(), "application/vnd.ms-outlook", "blahblah.msg");

我当前的前端@code 块包括:

var response = await Http.GetAsync($"routewhichgetsthe return");

我的问题是我需要在前端进行哪些更改以允许下载此返回的文件而不将其存储在服务器上?我不确定控制器调用是否需要更改,或者如何获取 HTML 以允许按下按钮来激活下载。

【问题讨论】:

  • 你试过window.open($"routewhichgetsthe return", '_blank');

标签: c# razor blazor


【解决方案1】:

如果你谷歌这个,你会发现像this one这样的页面,它给出了以下代码示例:

public async Task<string> DownloadFile(string guid)
{
    // validation
    _logger.LogInformation($"Downloading File with GUID=[{guid}].");
    var fileInfo = new FileInfo($"{guid}.txt");

    var response = await _httpClient.GetAsync($"{_url}/api/files?guid={guid}");
    response.EnsureSuccessStatusCode();
    await using var ms = await response.Content.ReadAsStreamAsync();
    await using var fs = File.Create(fileInfo.FullName);
    ms.Seek(0, SeekOrigin.Begin);
    ms.CopyTo(fs);

    _logger.LogInformation($"File saved as [{fileInfo.Name}].");
    return fileInfo.FullName;
}

注意,还有一个HttpClient.GetStreamAsync method

编辑:还有一个广泛的answer on SO

【讨论】:

    【解决方案2】:

    感谢您的帮助,实际上我缺少一个非常简单的解决方案。

    <a href="routewhichgetsthereturn" download>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2020-12-20
      • 2022-01-19
      • 1970-01-01
      • 2015-07-29
      • 2016-07-23
      • 2018-04-03
      相关资源
      最近更新 更多