如何将Laravel 5.3中的存储路径更改为公共路径?

13
在laravel 5.3中,如果我从表单上传文件,它将存储在自己的存储目录中。然后我应该在public路径中创建一个符号链接到该存储路径。
但由于限制,我不能在系统上使用创建符号链接的方式。如何直接上传文件到public/uploads而不是storage/app/uploads?
我尝试在AppServiceProvider.php中设置路径,但它不起作用。
public function register()
{
    //not working:
    $this->app->useStoragePath( $this->app->basePath() .  "/upload");

    //also not working:
    // $this->app->bind('path.storage', function () {
    // return $this->app->basePath() . '/upload';
    // });

}

我所说的“not working”,是指它仍在上传到默认存储目录。我还清除了缓存。

这是上传部分(在控制器中使用):

        $request->image->storeAs("uploads", "uploaded_image.jpg");

感谢任何提示。:)

1个回答

28

在 Laravel 5 中,现在您需要在 config/filesystems.php 文件中进行此操作。您可以像下面这样添加新磁盘:

'disks' => [

    'uploads' => [
          'driver' => 'local',
          'root'   => public_path(), // previously storage_path();
    ],

]

接下来,按照以下步骤使用它:

Storage::disk('uploads')->put('filename', $file_content);

1
谢谢!它起作用了。在我的例子中,我正在从表单上传图像。我还可以这样做,使用我的“uploads”磁盘:$request->image->storeAs($upload_dir, "uploaded_image.jpg", "uploads"); - MilMike
@George H,看起来你精通Laravel。我需要你的帮助。请看这里:http://stackoverflow.com/questions/41047583/how-to-add-dynamic-dropdown-list-column-on-laravel-5-3-registration - moses toh
1
我怎样才能从 Storage::url 访问文件? - Lamar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接