天天看点

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

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

  • WebApi Code
  • Client Code

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>

           

继续阅读