asp.net core webapi 向前端返回一个文件

后端接口返回文件

复制代码
[Authorization] //给下载模版添加权限
[HttpGet]
public IActionResult DownloadTemplate()
{
    //AppContext.BaseDirectory 用于获取项目根目录
    var filePath = $"{AppContext.BaseDirectory}/MyStaticFiles/取货模板.csv";
    if (!System.IO.File.Exists(filePath))
    {
        return new JsonResult("模板文件不存在!");
    }
    try
    {
        byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
        return File(fileBytes, "application/csv", "取货模板.csv");
    }
    catch (Exception ex)
    {
        return new JsonResult($"模板文件异常!" + ex.Message);
    }
}
复制代码

前端接口解析文件并下载

复制代码
function downloadTemplate() {const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD);
    const response = await fetch(apiURL+'/webTaskHelper/downloadTemplate', {
        method: 'GET',
        headers: {
          "token": localStorage.getItem("token") || '',
          'Content-Type': 'application/csv', //定义以什么编码来读取这个文件
        },
      });
      const data = await response.blob()
      const blob = new Blob([data])
      const url = URL.createObjectURL(blob);
      const link = document.createElement('a');
      link.href = url;
      link.download = '取货模板.csv';
      link.click();
}
复制代码

 

posted @   龙卷风吹毁停车场  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示