c# - 如何通过 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
有问题,有些参数有问题,有人可以帮我吗?
解决方案
推荐阅读
- python - 在 Python 上使用 scipy.least_squares 进行正弦波频率估计
- json - 如何在颠簸中保持空值的条件?
- ruby-on-rails - Ajax 请求速度问题
- annotations - 在 konvajs 中添加另一个形状时会显示所有以前的形状
- android - 如何在 Android 中将 protobuf 转换为 POJO/JSON
- android - Glide 与 Room 数据库的集成,GlideApp 类未生成(Glide 4.7.1)
- asp.net-web-api - 如何从我的 asp.net Web API 触发 App Center Push?
- javascript - 'Cache-Control: No-cache' 是否支持此设置?
- java - simple-spring-memcached 升级到 4.1.1 导致 WrappedCacheException
- java - 如何在android中为透明png图像添加描边/边框?