laravel 如何将文件保存在存储文件夹与原来的名称?

dxxyhpgq  于 2022-11-26  发布在  其他
关注(0)|答案(5)|浏览(225)

我想将上传的文件与原始客户端名称一起存储在存储文件夹中。我需要在代码中添加或更改哪些内容?如有任何帮助或建议,我们将不胜感激
这里是我的控制器

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,但方法未定义

yyyllmsg

yyyllmsg1#

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

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

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

esbemjvw2#

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);
}
pod7payv

pod7payv3#

要获取原始文件名,您可以在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);
c0vxltue

c0vxltue4#

您可以使用putFileAs函数(而不是put)以默认名称保存存储文件,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));
yk9xbfzb

yk9xbfzb5#

我试图这样管理;

$insurance = $request->file('insurance_papers');
                $insuranceExtention = $insurance->getClientOriginalExtension();
                $path = "public/files/" . $carrier->id . "/insurance_papers." . $insuranceExtention;
                Storage::disk('local')->put($path, file_get_contents($insurance));

相关问题