Laravel:获取存储的文件名

3
我将在我的控制器中使用以下代码来存储上传的文件:
```php ```
$stored_file = $request->file('image')->store(Config::get('filesystems.uploads.gallery_dir'));
Log::info($stored_file);
$stored_file变量包含保存后的文件的完整路径,是否有Laravel内置函数可以仅返回生成的文件名?(不包括路径)
目前,$stored_file 返回 uploads/gallery/wg7Aa4frj8PQkH89oIseMtlpFtruiJNsHTOoretn.jpeg,希望它返回wg7Aa4frj8PQkH89oIseMtlpFtruiJNsHTOoretn.jpeg

1
尝试使用$stored_file->getName(),或者使用PHP函数pathinfo($stored_file)['basename']。 - undefined
@irza,请将此转换为答案,pathinfo方法按要求工作。 - undefined
4个回答

9
使用:pathinfo($stored_file)['basename']

3

考虑 Laravel 7.x,当您使用以下代码从请求中获取上传的文件时:

$file = $request->file('photo');

您将获得一个 UploadedFile 文件实例,当您在其上调用 "store" 方法时,它会内部使用名为 "hashName" 的函数使用 md5 哈希生成唯一名称。

因此,如果您在 UploadedFile 实例上调用 "hashName" 方法,则会获得与 Laravel 在 "store" 方法调用期间创建的相同唯一名称。

$filename = $request->file('photo')->hashName();


1
你可以使用 str_replace 来去除不必要的内容:
<?php

  echo str_replace("uploads/gallery/", "", $stored_file); 

?>

1
你可以这样使用 hashName() 方法来实现:

$file = $request->file('image');
$url = $file->store('/posts');
echo $file->hashName();

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