PhpSpreadsheet:如何使用 Laravel 存储磁盘保存电子表格?

Nee*_*bus 3 storage laravel phpspreadsheet

我已经生成了一个有效的电子表格,并且可以使用记录在案的保存方法来保存它:

$writer = new Xlsx($spreadsheet);
$writer->save('file.xlsx');
Run Code Online (Sandbox Code Playgroud)

但是如何使用 Laravel 提供的存储磁盘呢?我可以在将文件写入磁盘之前获取文件的内容吗?

Nee*_*bus 8

我自己想出来的。由于这里没有 $writer->getContent() 方法是我的解决方法:

  • 保存到php://output
  • 使用ob_start/ob_get_contents捕获文件内容。
  • 最后在任何磁盘上调用常规的 Storage put()方法!

这是我的代码:

    $writer = new Xlsx($spreadsheet);

    ob_start();
    $writer->save('php://output');
    $content = ob_get_contents();
    ob_end_clean();

    Storage::disk('local')->put("myfile.xlsx", $content); 
    Storage::disk('myftp')->put("myfile.xlsx", $content); 
Run Code Online (Sandbox Code Playgroud)