web api 文件下载
数据源:
1.byte字节流
var stream = new FileStream(filePath, FileMode.OpenOrCreate);
2.本地文件
var stream = new FileStream(filePath, FileMode.OpenOrCreate);
返回类型:HttpResponseMessage
public HttpResponseMessage DownloadExecll(string fundId)
{
var fileName ="";
var bytes = null;
return GetFileResponse(fileName,bytes);
}
private HttpResponseMessage GetFileResponse(string fileName, byte[] bytes)
{
HttpResponseMessage response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
var mime = System.Web.MimeMapping.GetMimeMapping(fileName);
var stream = new MemoryStream(bytes);
response.Content = new StreamContent(stream);
// 下载服务已有的文件 fileStream
//var filePath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/App_Data/myfile.xls");
//var stream = new FileStream(filePath, FileMode.OpenOrCreate);
// stream 保存到本地文件
//File.WriteAllBytes(@"C:\xxxx.xlsx", bytes);
response.Content = new StreamContent(stream);
bool isFirefox = Request.Headers.UserAgent.ToString()
.IndexOf("Firefox", StringComparison.CurrentCultureIgnoreCase) > -1;
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(mime);
response.Content.Headers.ContentDisposition =
new ContentDispositionHeaderValue("attachment")
{
FileName = isFirefox ? fileName :
HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)
};
response.Content.Headers.ContentLength = stream.Length;
}