如何从Laravel中存储的文件中获取下载网址

时间:2018-10-14 22:02:14

标签: php laravel phpspreadsheet

我正在使用PhpSpreadSheet生成XLSX文件,并通过访问如下特定路径来成功下载了该文件:

$writer = new Xlsx($spreadsheet);
$writer->save('TTD-HMO-ARSUB.xlsx');
return response()->download('TTD-HMO-ARSUB.xlsx');

我看到TTD-HMO-ARSUB.xlsx文件存储在我的Laravel项目的公用文件夹中。

这里的问题是我需要通过POST请求从Angular应用发送一些数据,并将这些数据包括在Excel文件中,所以我不能只是访问该路由。因此,我决定尝试获取所创建文件的下载URL。我尝试使用这些url失败,只有404s:

  

http://eiba.com/public/index.php/TTD-HMO-ARSUB.xlsx

     

http://eiba.com/public/TTD-HMO-ARSUB.xlsx

     

http://eiba.com/TTD-HMO-ARSUB.xlsx

是否可以通过URL访问此文件?我需要将其存储在另一个位置吗?

1 个答案:

答案 0 :(得分:0)

我以这种方式解决了它,尽管它可能不是最好的:

$writer = new Xlsx($spreadsheet);
$writer->save('excel/TTD-HMO-ARSUB.xlsx');
return response()->json([
   'url' => 'excel/TTD-HMO-ARSUB.xlsx'
]);

事实证明,您不能引用直接位于公共目录下的文件,但是可以使用子目录,例如: public / excel ,并且这样的URL可以使用:

  

http://eiba.com/excel/TTD-HMO-ARSUB.xlsx