Laravel: 如何访问本地磁盘中的文件? - 文件不存在
Laravel: how to access a file in the local disk? - File does not exist
我试图在 laravel 中上传 excel 文件后对其进行编辑。
该文件已上传到本地磁盘,因此没有人可以从 public.
访问它
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') 将直接在应用程序中
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
的值来访问该文件。
编辑
经过下面的讨论,OP决定,即使不是完美的解决方案,他也会使用$objPHPExcel = PHPExcel_IOFactory::load('..'.Storage::disk('local')->url($fileLocation));
。
我试图在 laravel 中上传 excel 文件后对其进行编辑。 该文件已上传到本地磁盘,因此没有人可以从 public.
访问它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') 将直接在应用程序中
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
的值来访问该文件。
编辑
经过下面的讨论,OP决定,即使不是完美的解决方案,他也会使用$objPHPExcel = PHPExcel_IOFactory::load('..'.Storage::disk('local')->url($fileLocation));
。