加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – 如何从ASP.net 5 web api返回文件

发布时间:2020-12-16 00:09:32 所属栏目:asp.Net 来源:网络整理
导读:在asp.net 5中创建了wep api.我想回复Post请求的文件响应.但不是文件响应的样子 ` { "version": { "major": 1,"minor": 1,"build": -1,"revision": -1,"majorRevision": -1,"minorRevision": -1 },"content": { "headers": [ { "key": "Content-Disposition"
在asp.net 5中创建了wep api.我想回复Post请求的文件响应.但不是文件响应的样子
`
{
  "version": {
    "major": 1,"minor": 1,"build": -1,"revision": -1,"majorRevision": -1,"minorRevision": -1
  },"content": {
    "headers": [
      {
        "key": "Content-Disposition","value": [
          "attachment; filename=test.pdf"
        ]
      },{
        "key": "Content-Type","value": [
          "application/pdf"
        ]
      }
    ]
  },"statusCode": 200,"reasonPhrase": "OK","headers": [],"requestMessage": null,"isSuccessStatusCode": true
}`

码:

public HttpResponseMessage Post([FromBody]DocumentViewModel vm)
    {
        try
        {
            if (ModelState.IsValid)
            {

                var Document = _repository.GetDocumentByGuid(vm.DocumentGuid,User.Identity.Name);
                var Params = Helper.ClientInputToRealValues(vm.Parameters,Document.DataFields);
                var file = Helper.GeneratePdf(Helper.InsertValues(Params,Document.Content));                 

                var result = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new ByteArrayContent(System.IO.File.ReadAllBytes(file))
                };
                result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
                {
                    FileName = "test.pdf"
                };
                result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
                return result;

            }

        }
        catch (Exception ex)
        {
            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return null;
        }
        Response.StatusCode = (int)HttpStatusCode.BadRequest;
        return null;

    }

如何将实际文件作为响应而不是JSON返回?我使用Postman作为测试客户端.

解决方法

使用IActionResult而不是HttpResponseMessage.并返回FileStreamResult,并使其工作.

遇到了一个新问题,该文件不是我用来自服务器的流打开的文件.但是会为此创造一个新问题.

继续:Return file from ASP.NET 5 Web API

谢谢

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读