WebAPI返回文件下载链接

本文介绍了一种通过API从SDE下载数据至临时MDB文件的方法,并返回前端可直接使用的HTTP下载链接。具体实现包括创建临时文件夹、获取文件相对路径及构造下载链接。

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

遇到一个需求,即通过接口从SDE中下载数据到临时的MDB中,返回前端一个http下载链接,让前端可以通过该链接获得MDB文件。于是,我们在网站根目录(即与App_Data、web.config同级目录)中创建一个TempData目录,用于保存下载后的临时MDB文件,再通过解析调用请求,获得IP与端口,与该路径拼接成一个下载链接。

代码如下:

        /// <summary>
        /// 测试:返回路径
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [ResponseType(typeof(string))]
        public IHttpActionResult Parse()
        {
            var sPath = @"E:\Code\MyTest\WebApplication2\WebApplication2\TempData\abc.mdb";
            //var sPath = @"~\TempData\abc.doc";

            if (sPath.IndexOf("~") == 0)
                sPath = HostingEnvironment.MapPath(sPath); //转为绝对路径
            //取得当前网站的绝对路径
            var sRootePath = HostingEnvironment.MapPath(HostingEnvironment.ApplicationVirtualPath);
            //取得文件相对于网站的路径(如:TempData/abc.mdb)
            var sRelativeUri = new Uri(sRootePath, UriKind.Absolute).MakeRelativeUri(new Uri(sPath, UriKind.Absolute)).ToString();
            // 先判断是否与原路径相同,如相同则表示二者可能不在同一个磁盘上
            var sResult = (0 == string.Compare(Path.GetFullPath(sRelativeUri), Path.GetFullPath(sPath), StringComparison.OrdinalIgnoreCase))
                ? null : $"http://{HttpContext.Current.Request.Url.Authority}/{sRelativeUri}"; //构造返回路径
            return Json(sResult);
        }

调用时,返回的结果为:

"http://localhost:6730/TempData/abc.mdb"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值