返回从控制器的二进制文件中的ASP.NET Web API [英] Returning binary file from controller in ASP.NET Web API

查看:295
本文介绍了返回从控制器的二进制文件中的ASP.NET Web API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用ASP.NET MVC的新的WebAPI的Web服务,这将有助于了二进制文件,大多是的.cab .EXE 文件。

I'm working on a web service using ASP.NET MVC's new WebAPI that will serve up binary files, mostly .cab and .exe files.

下面的控制器方法似乎工作,这意味着它返回一个文件,但它的设置内容类型应用程序/ JSON

The following controller method seems to work, meaning that it returns a file, but it's setting the content type to application/json:

public HttpResponseMessage<Stream> Post(string version, string environment, string filetype)
{
    var path = @"C:\Temp\test.exe";
    var stream = new FileStream(path, FileMode.Open);
    return new HttpResponseMessage<Stream>(stream, new MediaTypeHeaderValue("application/octet-stream"));
}

有没有更好的方法来做到这一点?

Is there a better way to do this?

推荐答案

尝试使用简单的的Htt presponseMessage ,以 StreamContent 里面,它应该很好地工作。

Try using a simple HttpResponseMessage, with a StreamContent inside, which should work fine.

public HttpResponseMessage Post(string version, string environment,
    string filetype)
{
    var path = @"C:\Temp\test.exe";
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    var stream = new FileStream(path, FileMode.Open);
    result.Content = new StreamContent(stream);
    result.Content.Headers.ContentType = 
        new MediaTypeHeaderValue("application/octet-stream");
    return result;
}

这篇关于返回从控制器的二进制文件中的ASP.NET Web API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆