laravel 如何下载文件

现在我项目是前后端分离的,想做个把服务器上的模板excel下载下来的功能
前端调取接口会返回文件的内容,就是乱码类似
PK
Nâ@ docProps/PKNâ@»7Ù¯04docProps/app.xmlÁJ1E÷ÿ²o3-“R2);Zu3oÚÀLçÐú-.t!
这些的
但是我直接在浏览器上请求那个文件是能直接下载文件,就问下前端调取接口后能不能直接就下载文件了,而不用返回文件内容给前端,再让前端下载

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5
后端 get api/store/{id}
$file = Storage::disk()->get($id);
response()->download($file,'xxxx.xlsx');
前端
<a href="./api/store/xxx"/>
2年前 评论

前端触发跳转事件

window.location.href="/api/downloadurl"

dowloadurl 这样写

return response()->download($pathToFile, $name, $headers);
2年前 评论
import * as FileSaver from "file-saver";
import axios from "instance/axios";
import React from "react";

export default () => {
  React.useEffect(() => {
    axios.get("/xlsx", { responseType: "blob" }).then(({ data }) => {
      FileSaver.saveAs(data, "test.xlsx");
    });
  }, []);

  return <div />;
};
2年前 评论

前端要么直接跳出到url下载,要么想楼上那样把数据流保存为文件

2年前 评论

如果模板不怎么变化的,可以考虑直接放在前端的web目录下,这样不用走接口了

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!