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

问题描述 投票:0回答:2

在我的 Laravel API 调用中,我使用存储来上传文件。然后我想使用以下方法重命名并将文件移动到公共目录:

    $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
周围使用双引号,但没有成功。

php laravel laravel-5.1
2个回答
7
投票

如果你在

config/filesystems.php
中有一个数组['disks']['public'],你可以这样做:

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

如果您不创建如下所示的:

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

然后您就可以将public“磁盘”与存储外观一起使用。

注意,你不必再指定绝对路径,Laravel 会知道存储路径是 app/public

编辑

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

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

0
投票

此方法适用于您的主机是cPanel且终端功能可用的情况。

首先进入你的配置>filesystems.php

最后一行是这样的:

'links' => [
    public_path('storage') => storage_path('app/public'),
],

您应该将其更改为您的主机 public_html 路径,如下所示:

'links' => [
    '/home/NAME/public_html/storage' => storage_path('app/public'),
],

您可以在主机根文件夹中找到“NAME”。

转到cPanel终端 cd 到您的项目文件。 通过 ls 命令,您可以看到命令行所在的根目录的子级。 运行命令:

php artisan storage:link

注意:在运行上述命令之前,您应该删除 public_html>storage 文件夹(如果存在)。

© www.soinside.com 2019 - 2024. All rights reserved.