从Blazor客户端应用程序从ASP.NET Core API下载文件

让·丹尼尔·加瑟(Jean-Daniel Gasser)

我创建了一个返回FileStreamResult对象的ASP.NET Core API控制器(如果需要,我可以更改结果的类型)

这是Get函数的代码:

[HttpGet("[action]/{p_gInspectionID}/{p_nIndex}")]
public async Task<FileStreamResult> GetInspectionPictureToDownload(Guid p_gInspectionID, int p_nIndex)
{
  var l_strFilePath = await GetPictureFilePathAsync(p_gInspectionID, p_nIndex);

  using (var l_sReader = System.IO.File.OpenRead(l_strFilePath))
  {
    return (File(l_sReader, "image/jpeg"));
  }
}

现在,我需要在Blazor(Webassembly)客户端应用程序中使用此结果。

我的目标是要有一个按钮,当用户单击文件时,可以在浏览器中启动文件下载

这将启动浏览器的下载功能。是否可以在Blazor客户端应用程序中实现此目的?

让·丹尼尔·加瑟(Jean-Daniel Gasser)

这是我解决问题的方法。实际上,解决方案非常简单。感谢@Data Juggler为我指出正确的方向。

我的Blazor解决方案包含两个项目:

  • 服务器端API(Blazor服务器)
  • 客户端(Blazor WebAssembly)。

这是服务器端的代码

[AllowAnonymous]
[HttpGet("[action]/{p_strPictureFilePath}")]
public IActionResult GetInspectionPicture(string p_strPictureFilePath)
{
  var l_sReader = System.IO.File.OpenRead(p_strPictureFilePath);

  return (File(l_sReader, "application/octet-stream", Path.GetFileName(p_strPictureFilePath)));
}

...以及客户端代码

client-shared.js文件中添加了此脚本

window.downloadInspectionPicture = function (p_strServerFilePath)
{
  var link = document.createElement('a');
  link.href = 'api/Data/GetInspectionPicture/' + this.encodeURIComponent(p_strServerFilePath);
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}

当然,在index.html以下位置存在对该文件的引用

  <script src="client-shared.js"></script>

最后,在剃刀文件中添加一个链接,并在单击链接时调用脚本:

<a href="javascript:void(0)" @onclick="@(async () => await DownloadPictureAsync())">Download</a>

@code
{
  [Inject]
  IJSRuntime ThisJSRuntime { get; set; }

  private async Task DownloadPictureAsync()
  {
    await ThisJSRuntime.InvokeVoidAsync("downloadInspectionPicture", ServerFilePath);
  }
}

希望我的答案是明确的,并且对某人有用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SignalR .NET客户端连接到Blazor .NET Core 3应用程序中的Azure SignalR服务

来自分类Dev

在ASP.NET MVC 5控制器中使用POST从dotnet Core Web API下载文件

来自分类Dev

如何在ASP.NET Core中使用客户端下载文件并作出反应?

来自分类Dev

使用Blazor Webassembly和ASP.NET Core安全下载文件

来自分类Dev

在AngularJS + ASP.NET Web API应用程序中将通知/消息集成到客户端

来自分类Dev

在AngularJS + ASP.NET Web API应用程序中将通知/消息集成到客户端

来自分类Dev

尝试使用 angular 5 和 asp.net core 从数据库下载文件

来自分类Dev

当用户未分配给客户端应用程序时,使用 ASP.Net Core 的 OKTA 身份验证会引发未处理的异常

来自分类Dev

在Asp.net上下载文件

来自分类Dev

将客户端Blazor添加到现有的ASP.NET MVC5应用程序

来自分类Dev

ASP .Net Core Web 应用程序调用 Web API

来自分类Dev

使用HTML客户端应用程序到ASP.Net Web API(MVC)进行表单身份验证

来自分类Dev

如何使用Asp.net Web API 2.2向MVC客户端应用程序添加OData v4终结点的引用

来自分类Dev

更改时部署ASP.Net MVC,Angular应用程序下载文件

来自分类Dev

asp.net core web api如何从客户端发送json对象c#

来自分类常见问题

使用AngularJS从ASP.NET Web API方法下载文件

来自分类Dev

使用asp.net mvc从Google Drive Api下载文件的问题

来自分类Dev

不支持给定路径的格式。从 Asp.net Api 下载文件时出错

来自分类Dev

使用Web Api作为客户端的SignalR [.Net Core]

来自分类Dev

C#.NET Core托管Blazor WebAssembly-将其他客户端添加到.Server项目API

来自分类Dev

从asp.net中的文件夹下载文件

来自分类Dev

从asp.net中的文件夹下载文件

来自分类Dev

将文件从ASP.NET MVC 4.6应用程序发布到ASP.NET Core Web API

来自分类Dev

ASP.Net Core:SSH 客户端的处理

来自分类Dev

注销后在ASP.NET Blazor Web Assembly客户端应用程序中使用Auth0登录提示

来自分类Dev

使用.NET Core Web API作为ASP.NET Web窗体应用程序的子路由

来自分类Dev

如何在ASP .NET Core Web API中映射后备,以便Blazor WASM应用程序仅拦截不对API的请求

来自分类Dev

使用asp.net mvc下载文件

来自分类Dev

如何使用ASP.NET下载文件

Related 相关文章

  1. 1

    SignalR .NET客户端连接到Blazor .NET Core 3应用程序中的Azure SignalR服务

  2. 2

    在ASP.NET MVC 5控制器中使用POST从dotnet Core Web API下载文件

  3. 3

    如何在ASP.NET Core中使用客户端下载文件并作出反应?

  4. 4

    使用Blazor Webassembly和ASP.NET Core安全下载文件

  5. 5

    在AngularJS + ASP.NET Web API应用程序中将通知/消息集成到客户端

  6. 6

    在AngularJS + ASP.NET Web API应用程序中将通知/消息集成到客户端

  7. 7

    尝试使用 angular 5 和 asp.net core 从数据库下载文件

  8. 8

    当用户未分配给客户端应用程序时,使用 ASP.Net Core 的 OKTA 身份验证会引发未处理的异常

  9. 9

    在Asp.net上下载文件

  10. 10

    将客户端Blazor添加到现有的ASP.NET MVC5应用程序

  11. 11

    ASP .Net Core Web 应用程序调用 Web API

  12. 12

    使用HTML客户端应用程序到ASP.Net Web API(MVC)进行表单身份验证

  13. 13

    如何使用Asp.net Web API 2.2向MVC客户端应用程序添加OData v4终结点的引用

  14. 14

    更改时部署ASP.Net MVC,Angular应用程序下载文件

  15. 15

    asp.net core web api如何从客户端发送json对象c#

  16. 16

    使用AngularJS从ASP.NET Web API方法下载文件

  17. 17

    使用asp.net mvc从Google Drive Api下载文件的问题

  18. 18

    不支持给定路径的格式。从 Asp.net Api 下载文件时出错

  19. 19

    使用Web Api作为客户端的SignalR [.Net Core]

  20. 20

    C#.NET Core托管Blazor WebAssembly-将其他客户端添加到.Server项目API

  21. 21

    从asp.net中的文件夹下载文件

  22. 22

    从asp.net中的文件夹下载文件

  23. 23

    将文件从ASP.NET MVC 4.6应用程序发布到ASP.NET Core Web API

  24. 24

    ASP.Net Core:SSH 客户端的处理

  25. 25

    注销后在ASP.NET Blazor Web Assembly客户端应用程序中使用Auth0登录提示

  26. 26

    使用.NET Core Web API作为ASP.NET Web窗体应用程序的子路由

  27. 27

    如何在ASP .NET Core Web API中映射后备,以便Blazor WASM应用程序仅拦截不对API的请求

  28. 28

    使用asp.net mvc下载文件

  29. 29

    如何使用ASP.NET下载文件

热门标签

归档