博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET Web API 2 之文件下载
阅读量:5355 次
发布时间:2019-06-15

本文共 1618 字,大约阅读时间需要 5 分钟。

Ø  前言

目前 ASP.NET Web API 的应用非常广泛,主要承载着服务端与客户端的数据传输与处理,如果需要使用 Web API 实现文件下载,该 实现呢,其实也是比较简单,以下示例用于下载安卓的 .apk 文件。

 

1.   C# 代码

/// <summary>

/// 获取最新 Apk 文件。

/// </summary>

/// <param name="request"></param>

/// <returns></returns>

[Route("getLatest"), HttpGet]

[AllowAnonymous]

public HttpResponseMessage GetLatest(HttpRequestMessage request)

{

    var appVersionInfo = appManageService.GetLatest();

    string vp = appVersionInfo.VersionPath;     //http://xxx.xxx.xx.xx:81/xxxxx/xxx/3.0.6_20171017181838121.apk

    int lastIndex = vp.LastIndexOf("/");

    string fileName = "Yoca_{0}".Fmt(vp.Substring(lastIndex + 1, vp.Length - (lastIndex + 1)));

 

    byte[] bytes = null;

    WebRequest webRequest = (WebRequest)HttpWebRequest.Create(vp);

    using (WebResponse webResponse = webRequest.GetResponse())

    {

        using (var stream = webResponse.GetResponseStream())

        {

            bytes = new byte[webResponse.ContentLength];

            stream.Read(bytes, 0, bytes.Length);

        }

    }

 

    var response = request.CreateResponse();

    response.Content = new ByteArrayContent(bytes ?? new byte[0]);

    response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(

        "application/vnd.android.package-archive");

    response.Content.Headers.ContentDisposition =

        new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")

    {

        FileName = fileName

    };

    return response;

}

 

2.   说明

1)   以上代码:首先,从数据库中读取最新的 .apk 文件路径(网络URI);然后,使用 WebRequest 等对象获取该文件的响应流;最后,将获取的 byte 数组转为 ByteArrayContent 对象,以响应 HTTP 消息。

2)   注意:需要根据不同的文件类型,设置响应的 ContentType 值,可参考:http://www.runoob.com/http/http-content-type.html

3)   其实,很多文件下载都是使用这种方式,比如导出 excel 或者 csv 文件等。

转载于:https://www.cnblogs.com/abeam/p/7698726.html

你可能感兴趣的文章
零散笔记
查看>>
MaiN
查看>>
[Python学习] 简单网络爬虫抓取博客文章及思想介绍
查看>>
触发器课程SQL Server 知识梳理九 触发器的使用
查看>>
信息浏览器从Android的浏览器中传递cookie数据到App中信息浏览器
查看>>
客户端连接linux虚拟机集群报错
查看>>
linux下部署一个JavaEE项目的简单步骤
查看>>
hash储存机制
查看>>
[Android学习系列16]Android把php输出的json加载到listview
查看>>
20145205 《信息安全系统设计基础》第14周学习总结
查看>>
6)添加一个窗口的图标
查看>>
POJ - 1422 Air Raid 二分图最大匹配
查看>>
Road Map
查看>>
正则替换中的一个Bug
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
制作U盘启动CDLinux 分类: 生活百科 ...
查看>>
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>