Asp.net mvc 4 我可以使用MVC4'实现文件下载吗;什么是ApiController?
使用常规控制器,我可以通过返回FileResult来完成。这似乎不适用于ApiController。能做到吗?这样做对吗?试试这个Asp.net mvc 4 我可以使用MVC4'实现文件下载吗;什么是ApiController?,asp.net-mvc-4,Asp.net Mvc 4,使用常规控制器,我可以通过返回FileResult来完成。这似乎不适用于ApiController。能做到吗?这样做对吗?试试这个 [HttpGet] public HttpResponseMessage Get() { var file = HttpContext.Current.Server.MapPath("~/Images/accent.png"); var stream = new FileStream(file, FileMode.Op
[HttpGet]
public HttpResponseMessage Get()
{
var file = HttpContext.Current.Server.MapPath("~/Images/accent.png");
var stream = new FileStream(file, FileMode.Open);
var content = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(stream)
};
content.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return content;
}
多亏了你,我才有这个工作
Web API用于RESTful Web服务。因此,是的,这是一个不错的主意。我们得到了以下信息:
请求的资源不支持http方法“get”。
在方法上方添加一个HttpGet
属性([HttpGet]
)@蒂努普
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web.Http;
namespace Web.Controllers
{
//usage: /download/report
[RoutePrefix("download")]
public class DownloadController : ApiController
{
[HttpGet("report")]
public HttpResponseMessage Report()
{
using (var service = new Client())
{
var report = service.BuildReport();
return DownloadResponse(report, "Report.csv");
}
}
private static HttpResponseMessage DownloadResponse(string content, string fileName)
{
var downloadContent = new StringContent(content);
var mediaType = new MediaTypeHeaderValue("application/octet-stream");
var disposition= new ContentDispositionHeaderValue("attachment") { FileName = fileName };
downloadContent.Headers.ContentType = mediaType;
downloadContent.Headers.ContentDisposition = disposition;
var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = downloadContent
};
return result;
}
}
}