Laravel 5.1 使用存储将文件移动到 public 文件夹

Laravel 5.1 using storage to move the file to a public folder

在我的 Laravel API 调用中,我使用 Storage 上传文件。然后我想重命名文件并将其移动到 public 目录,方法是:

    $dest = '/var/www/public/uploads/';
    Storage::disk('local')->put($filename.'.'.$extension,  File::get($file));
    $oldfilename = $filename.'.'.$extension;
    Storage::move($oldfilename, $dest.$newImageName);

但是我没有将文件移动到 $dest 目录,而是在我的 storage/app 文件夹中创建了一个以 $dest 目录名称创建的文件夹,并将文件复制到那里。我也尝试过在 $dest.$newImageName 周围使用双引号,但没有成功。

如果你在 config/filesystems 中有一个数组 ['disks']['public']。php 你可以这样做:

Storage::disk('public')->move($oldfilename, $dest.$newImageName);

如果您不创建如下所示:

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

然后您将能够使用 public "disk" 和存储外观。

注意不用再指定绝对路径了,Laravel就知道存放路径是app/public.

编辑

另一个可能有效的配置选项:

    'public' => [
        'driver'     => 'local',
        'root'       => public_path(),
        'visibility' => 'public',
    ],