使用异步Task <IHttpActionResult>的Web API 2下载文件

凯特斯·沃尔夫雷沃

我需要编写一种如下所示的方法来返回文本文档(.txt,pdf,.doc,.docx等),尽管在Web API 2.0中有很多在网络上发布文件的示例,但我找不到相关的示例仅下载一个。(我知道如何在HttpResponseMessage中执行此操作。)

  public async Task<IHttpActionResult> GetFileAsync(int FileId)
  {    
       //just returning file part (no other logic needed)
  }

以上是否需要完全异步?我只想返回流。(这样可以吗?)

更重要的是,在我最终以一种方式或其他方式完成这项工作之前,我想知道进行这种工作的“正确”方法是什么...(因此,提及这种方法和技术将不胜感激)..谢谢。

基兰·查拉(Kiran Challa)

正确,对于上述情况,该操作不需要返回异步操作结果。在这里,我正在创建一个自定义的IHttpActionResult。您可以在下面的代码中查看我的评论。

public IHttpActionResult GetFileAsync(int fileId)
{
    // NOTE: If there was any other 'async' stuff here, then you would need to return
    // a Task<IHttpActionResult>, but for this simple case you need not.

    return new FileActionResult(fileId);
}

public class FileActionResult : IHttpActionResult
{
    public FileActionResult(int fileId)
    {
        this.FileId = fileId;
    }

    public int FileId { get; private set; }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        HttpResponseMessage response = new HttpResponseMessage();
        response.Content = new StreamContent(File.OpenRead(@"<base path>" + FileId));
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");

        // NOTE: Here I am just setting the result on the Task and not really doing any async stuff. 
        // But let's say you do stuff like contacting a File hosting service to get the file, then you would do 'async' stuff here.

        return Task.FromResult(response);
    }
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Play Web API下载文件(异步)

来自分类Dev

IHttpActionResult与异步Task <IHttpActionResult>

来自分类Dev

如何在内存中构建ZipArchive并通过Web API 2中的IHttpActionResult下载?

来自分类Dev

如何在内存中构建ZipArchive并通过Web API 2中的IHttpActionResult下载?

来自分类Dev

C#Web API帮助文档IHttpActionResult

来自分类Dev

Web API方法:返回IHttpActionResult或IQueryable

来自分类Dev

使用Jquery Post使用Web API下载文件

来自分类Dev

使用Jquery Post使用Web API下载文件

来自分类Dev

从ASP Web Api IHttpActionResult反序列化byte []

来自分类常见问题

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

来自分类Dev

在提示下使用Struts2下载文件

来自分类Dev

使用Web视图下载文件

来自分类Dev

限制使用Google Drive API V3下载文件

来自分类Dev

使用Amazon Android API下载文件

来自分类Dev

使用Amazon Android API下载文件

来自分类Dev

如何使用Retrofit2下载文件?

来自分类Dev

为什么Web Api HttpResponseMessage无法下载文件?

来自分类Dev

为什么Web Api HttpResponseMessage无法下载文件?

来自分类Dev

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

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

使用WEB API模拟文件下载

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

使用closedxml从web api下载excel文件

来自分类Dev

返回IHttpActionResult时,如何对Web API操作方法进行单元测试?

来自分类Dev

Web API 2.2 OData V4-Kendo网格-自定义创建的IHttpActionResult

来自分类Dev

Web API 2.2 OData V4-Kendo网格-自定义创建的IHttpActionResult

来自分类Dev

如何获取Web API IHttpActionResult响应并序列化C#

来自分类Dev

在ASP.Net Web Api 2中使用PUT动词上载文件

来自分类Dev

IHttpActionResult-如何使用?

Related 相关文章

  1. 1

    使用Play Web API下载文件(异步)

  2. 2

    IHttpActionResult与异步Task <IHttpActionResult>

  3. 3

    如何在内存中构建ZipArchive并通过Web API 2中的IHttpActionResult下载?

  4. 4

    如何在内存中构建ZipArchive并通过Web API 2中的IHttpActionResult下载?

  5. 5

    C#Web API帮助文档IHttpActionResult

  6. 6

    Web API方法:返回IHttpActionResult或IQueryable

  7. 7

    使用Jquery Post使用Web API下载文件

  8. 8

    使用Jquery Post使用Web API下载文件

  9. 9

    从ASP Web Api IHttpActionResult反序列化byte []

  10. 10

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

  11. 11

    在提示下使用Struts2下载文件

  12. 12

    使用Web视图下载文件

  13. 13

    限制使用Google Drive API V3下载文件

  14. 14

    使用Amazon Android API下载文件

  15. 15

    使用Amazon Android API下载文件

  16. 16

    如何使用Retrofit2下载文件?

  17. 17

    为什么Web Api HttpResponseMessage无法下载文件?

  18. 18

    为什么Web Api HttpResponseMessage无法下载文件?

  19. 19

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

  20. 20

    使用HttpClient下载Web API大文件

  21. 21

    使用WEB API模拟文件下载

  22. 22

    使用HttpClient下载Web API大文件

  23. 23

    使用closedxml从web api下载excel文件

  24. 24

    返回IHttpActionResult时,如何对Web API操作方法进行单元测试?

  25. 25

    Web API 2.2 OData V4-Kendo网格-自定义创建的IHttpActionResult

  26. 26

    Web API 2.2 OData V4-Kendo网格-自定义创建的IHttpActionResult

  27. 27

    如何获取Web API IHttpActionResult响应并序列化C#

  28. 28

    在ASP.Net Web Api 2中使用PUT动词上载文件

  29. 29

    IHttpActionResult-如何使用?

热门标签

归档