Laravel Storage :: disk() - > url();不能正常工作

时间:2017-07-16 19:17:07

标签: php laravel laravel-5.4

你好我在laravel有麻烦。

我想为某些东西(xls,image,pdf等)创建私人存储空间。 一切都在存储/应用程序/公共目录中很好,但我不想要它,我想要我的目录,如存储/应用程序/产品/ {id} /

首先看看我的代码:

filesystem.php

   'disks' => [

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

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],
      'productions' => [
        'driver' => 'local',
        'root' => storage_path('app/productions'),
        'visibility' => 'private',
    ],

我创造了新的阵列'制作'

ProductionController.php

public function file()
{

   return '<img src="'.Storage::disk('productions')->url('7/2.png').'">';

}

web.php(路线)

Route::group([
'middleware'=>'roles',
'roles'=>['Administrator','Prefabrykacja','Dyrektor Prefabrykacji']
], function () {
    Route::get('/Produkcja',[
        'uses'=>'ProductionController@index',
        'as'=>'production.index']);
    Route::post('/Produkcja/create',[
        'uses'=>'ProductionController@create',
        'as'=>'production.create']);


    Route::get('/Produkcja/file',[
        'uses'=>'ProductionController@file',
        'as'=>'production.file']);
});

如果我回来

return '<img src="'.Storage::disk('productions')->url('7/2.png').'">';

return '<img src="'.Storage::disk('local')->url('7/2.png').'">';

结果是一样的。两行返回存储/ app / public / 7 / 2.png中的图像将显示不是图像存储/ app / products / 7 / 2.png

如何显示我的产品文件夹中的图像并将资源限制为指定的角色?

此致

1 个答案:

答案 0 :(得分:0)

首先,您可能错过了publicLocal URL Host Customization)这样的符号链接。此外,您需要为url指定public参数,并将visibility更改为public,以便其他人可以查看您的文件。

<强> filesystem.php:

'disks' => [

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

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

    'productions' => [
        'driver' => 'local',
        'root' => storage_path('app/productions'),
        'url' => env('APP_URL') . '/productions', // added line (directory within "public")
        'visibility' => 'public', // modified visibility
    ],
],

还要确保在public/productions处创建一个指向storage/app/productions目录的符号链接。您可以使用以下命令(例如)执行此操作:

cd LARAVEL_PATH && ln -s storage/app/productions public/productions