.Net5 WebApi中下载文件(返回FileStreamResult)

.Net5 WebApi中下载文件(返回FileStreamResult)

WebApi Code


        /// <summary>
        /// 下载文件   LastUpdateDate:2021-07-14 18:25:03.811  Author:Lingbug
        /// </summary>
        /// <returns></returns>
        [HttpPost, AllowAnonymous]
        public IActionResult DownloadFile()
        {
            //文件地址
            var fileUrl = Request.Form["fileUrl"].ToString();
            //校验
            if (fileUrl.IsNullOrWhiteSpaceString()) throw new ErpFriendlyException("要下载的文件地址不能为空!");
            //文件路径
            string filePath = FileUtil.GetFullPath(fileUrl);
            //校验
            if (!System.IO.File.Exists(filePath)) throw new ErpFriendlyException("要下载的文件不存在!");
            //新文件
            var copyFile = new SaveFileOutput(Path.GetFileName(filePath), SaveFileOutputFileNameTypeEnum.TimeStamp, "UploadFiles", "DownloadFile", "Copy");
            //复制文件
            System.IO.File.Copy(filePath, copyFile.FileFullPath, true);
            //文件名
            var fileName = Request.Form["fileName"].ToString();
            //文件名
            if (fileName.IsNullOrWhiteSpaceString()) fileName = Path.GetFileName(filePath);
            //下载
            return new FileStreamResult(new FileStream(copyFile.FileFullPath, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName.TrimStr() };
        }

Client Code


<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div id="app">
        <input type="button" value="测试下载" id="btnTestDownload" />

        <form id="fileForm" action="" method="post">
            <input id="fileName" name="fileName" value="" />
            <input id="fileUrl" name="fileUrl" value="" />
            <input type="submit" value="提交" id="btnDownload" />
        </form>
    </div>
</body>
</html>
<script src="~/lib/jquery-3.4.1.min.js"></script>
<script src="~/Scripts/lingbugUtil.js"></script>
<script>
    $(function () {
        $('#btnTestDownload').click(function () {
            //api地址
            var host = 'http://localhost:55992';
            //api地址
            document.getElementById('fileForm').setAttribute('action', host + '/erpApi/LevoxErpBase/DownloadFile');
            //要下载的文件路径
            document.getElementById('fileUrl').value = '/LevoxFiles/UploadFiles/Temp/外出质检报告202102020003_20210609095346218_2.jpg';
            //要下载下来的文件名
            document.getElementById('fileName').value = 'lingbug.jpg';
            //下载
            document.getElementById('btnDownload').click();
        });
    });
</script>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值