如何使用原始名称将文件保存在存储文件夹中?

How to Save File in storage folder with Original name?

我想在存储文件夹中存储一个带有原始客户端名称的上传文件。我需要在我的代码中添加或更改什么?任何帮助或建议将不胜感激

这是我的控制器

public function store(Request $request) {
    $path = "dev/table/".$input['id']."";
    $originalName = $request->file->getClientOriginalName();
    $file = $request->file;
    
    
    Storage::disk('local')->put($path . '/' . $originalName, $request->file);
}

编辑:我知道如何获取 originalClientName。问题是使用原始名称而不是哈希名称将文件存储在文件夹中。它不会存储在原始文件中,而是创建一个新文件夹,这里是输出 "dev/table/101/Capture1.PNG/xtZ9iFoJMoLrLaPDDPvc4DMJEXkRL3R4qWOionMC.png" 我想要得到的是 "dev/table/101/Capture1.PNG"

我试过使用StoreAsputFileAs但方法未定义

要获取原始文件名,您可以在 ControllerClass 中使用它:
$file = $request->file->getClientOriginalName();

要获得额外的扩展,您可以使用此 Laravel 请求方法:

$ext = $request->file->getClientOriginalExtension();

然后你可以保存:

$fileName = $file.'.'.$ext;
$request->file->storeAs($path, $fileName);
// or 
Storage::disk('local')->put($path . '/' . $fileName , $request->file);

public function store(Request $request) {
    
    $originalName = $request->file->getClientOriginalName();
    $extension = $request->file->getClientOriginalExtension();

    $path = "dev/table/" . $input['id'] . "/" . $originalName . "." . $extension;

    $file = $request->file;
    
    
    Storage::disk('local')->put($path, $file);
}

您可以使用 putFileAs 函数而不是 put 函数以默认名称保存文件,这允许将第三个参数作为文件名

$path = "dev/table/101/";
$originalName = request()->file->getClientOriginalName();
$image = request()->file;

Storage::disk('local')->putFileAs($path, $image, $originalName);

更新

你可以用 put 做这样的事情,

 Storage::disk('local')->put($path.$originalName, file_get_contents($image));

我设法弄清楚如何用自定义名称存储它,对于那些想知道如何做到这一点的人来说,这里是代码

$id = $input['id'];
$originalName = $request->file->getClientOriginalName();
$path = "dev/table/$id/".$originalName;

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