首页 文章

Laravel:如何访问本地磁盘中的文件? - 文件不存在

提问于
浏览
1

我正在尝试在laravel中上传后编辑excel文件 . 该文件上传到本地磁盘,因此没有人可以从公众访问它 .

Filesystems.php

'local' => [
        'driver' => 'local',
        'root' => storage_path('app')

Routes.php

Route::get('test',function()
{

    // Create new PHPExcel object
    $objPHPExcel = new PHPExcel();
    $objPHPExcel = PHPExcel_IOFactory::load(Storage::disk('local')->url('margin/analyser/0IGkQQgmGXkHrV9ISnBTrGyZFUPfjz3cWJbLGbDN.xlsx'));
    $objPHPExcel->setActiveSheetIndex(0);
    echo $objPHPExcel->getActiveSheet()->getHighestRow();
})->middleware('admin');

我一直在收到错误:

Could not open /storage/margin/analyser/0IGkQQgmGXkHrV9ISnBTrGyZFUPfjz3cWJbLGbDN.xlsx for reading! File does not exist.

这很有效

$objPHPExcel = PHPExcel_IOFactory::load('..'.Storage::disk('local')->url('app/margin/analyser/0IGkQQgmGXkHrV9ISnBTrGyZFUPfjz3cWJbLGbDN.xlsx'));

但它很烦人 . 我认为在filesystems.php中指定'root'=> storage_path('app')意味着Storage :: disk('local')将直接在app中

1 回答

  • 1

    URL method用于获取文件的URL(即:从浏览器访问它的东西) . 您要使用的是 get() 方法 .

    $contents = Storage::get(''margin/analyser/0IGkQQgmGXkHrV9ISnBTrGyZFUPfjz3cWJbLGbDN.xlsx'');
    

    话虽这么说,使用Laravel操作上传文件仍然更容易 .

    // this will take the uploaded file from the request
    // and store it into `/storage/someFolder`
    $path = $request->file('file')->store('someFolder');
    

    然后,您可以使用返回 $path 的值来访问该文件 .

    EDIT

    经过下面的讨论,OP决定,即使它不是完美的解决方案,他也会使用 $objPHPExcel = PHPExcel_IOFactory::load('..'.Storage::disk('local')->url($fileLocation)); .

相关问题