首页 > 解决方案 > 如何通过 HttpResponseMessage 在 Web API、ASP.NET MVC 5 中返回文件

问题描述

我正在开发一个对股票照片进行搜索的 API,现在我需要提供文件(下载方法),所以我创建了以下代码:

public HttpResponseMessage Download(string id)
{
    Download download = new Download(id, apiUser);
    byte[] myDataBuffer = download.DownloadImage();

    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    result.Content = new ByteArrayContent(myDataBuffer);
    result.Content.Headers.ContentType =
    new MediaTypeHeaderValue("application/octet-stream");

    return result;
}

在方法上正确接收字节DownloadImage(),问题出在HttpResponseMessage返回中,我在发布网站上传并通过另一个项目我有以下调用 API 的代码:

public static void DownloadNewImage(string id)
{

    var request = new RestRequest(Method.GET);
    request.Resource = "Home/Download";
    request.AddParameter("id", id);
    RestResponse response = Execute(request, "website-url");
}

private static RestResponse Execute(RestRequest request, string url)
{
    var cliente = new RestClient(url);
    cliente.FollowRedirects = false;
    var response = cliente.Execute(request);          
    return (RestResponse)response;
}

当我调试响应时,我收到以下信息:

在此处输入图像描述

看到这一点ContentLength = -1,当我打开Content文本时,返回是这样的:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content:                    
System.Net.Http.ByteArrayContent, Headers:
{
    Content-Type: application/octet-stream
}

我认为Download返回的 API 的方法HttpResponseMessage有问题,有些参数有问题,有人可以帮我吗?

标签: c#

解决方案


推荐阅读