Laravel上传的文件未出现在链接的“公共/存储”文件夹中

时间:2019-11-15 09:27:38

标签: php laravel laravel-5

当我运行命令:php artisan storage:link时,将创建文件夹/public/storage

然后我有处理上传文件的代码:

// get file original name and extension here, then generate file new name $fileNameToStore
// set file path
$path = $request->file('my_file')->storeAs('public/uploaded_imgs', $fileNameToStore);

代码有效,并且上载的文件显示在/storage/app/public/uploaded_imgs/文件夹中,这很不错,尽管/public/storage文件夹中没有任何内容。

为什么uploaded_imgs目录中没有/public/storage文件夹?我做错了什么?

4 个答案:

答案 0 :(得分:1)

在config / filesystems.php中,您可以...在公共目录中更改根元素

注意:您可以使用文件夹名称

代替上传
'disks' => [
   'public' => [
       'driver' => 'local',
       'root'   => public_path() . '/uploads',
       'url' => env('APP_URL').'/public',
       'visibility' => 'public',
    ]
]

,您可以通过

进行访问
Storage::disk('public')->put('uploaded_imgs', $request->file('my_file'));

'disks' => [
    'local' => [
        'driver' => 'local',
        'root'   => storage_path(),
    ],
    'uploads' => [
        'driver' => 'local',
        'root'   => public_path() . '/uploads',
    ],
]

然后使用它:

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

答案 1 :(得分:0)

尝试一下:

Storage::disk('public')->put('uploaded_imgs', $request->file('my_file'));

希望它能工作。

答案 2 :(得分:0)

当您运行php artisan storage:link命令时,Laravel在“ public”文件夹下生成一个“存储”符号链接,该链接指向/storage/app/public,因此您的代码是正确的。

没有public/storage目录,它是一个指向/storage/app/public的符号链接,这是生成uploaded_imgs文件夹的位置。

public/storage => /storage/app/public

答案 3 :(得分:0)

您可以使用以下代码上传文件:

$file = $request->file('my_file');
$fileNameWithoutExtension = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);

$path = "public/uploaded_imgs/" + $fileNameWithoutExtension +"."+$file->getClientOriginalExtension();

Storage::disk('local')->put($path, file_get_contents($file), 'public');