laravel 如何下载文件

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 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年前 评论

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