web api 文件下载

本文介绍了如何通过Web API处理两种数据源(byte字节流和本地文件)来实现文件下载,重点在于返回HttpResponseMessage的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值