首页 文章

Laravel - 使用存储上传图像时创建自定义名称

提问于
浏览
4

我正在尝试使用laravel Storage上传文件,即 $request->file('input_field_name')->store('directory_name'); 但是它使用随机字符串名称将文件保存在指定目录中 .

现在我想用 custom name 保存上传的文件,即当前时间戳与实际文件名连接 . 是否有任何最快速,最简单的方法来实现此功能 .

5 回答

  • 8

    请改用storeAs()

    $request->file('input_field_name')->storeAs('directory_name', time().'.jpg');
    
  • 2

    您可以使用以下代码:

    Use File Facade

    use Illuminate\Http\File;

    Make Following Changes in Your Code

    $custom_file_name = time().'-'.$request->file('input_field_name')->getClientOriginalName();
    $path = $request->file('input_field_name')->storeAs('directory_name',$custom_file_name);
    

    更多细节:Laravel FilesystemstoreAs由@Alexey Mezenin提及

    希望这段代码能帮助:)

  • 1

    你也可以这样试试

    $ImgValue     = $request->service_photo;
    $getFileExt   = $ImgValue->getClientOriginalExtension();
    $uploadedFile =   time()'.'.$getFileExt;
    $uploadDir    = public_path('UPLOAS_PATH');
    $ImgValue->move($uploadDir, $uploadedFile);
    

    谢谢,

  • 3

    尝试以下工作:

    $image =  time() .'_'. $request->file('image')->getClientOriginalName();   
     $path = base_path() . '/public/uploads/';
     $request->file('image')->move($path, $image);
    
  • 2

    你也可以试试这个 .

    $originalName = time().'.'.$file->getClientOriginalName();
    $filename = str_slug(pathinfo($originalName, PATHINFO_FILENAME), "-");
    $extension = pathinfo($originalName, PATHINFO_EXTENSION);
    $path = public_path('/uploads/');
    
    //Call getNewFileName function 
    $finalFullName = $this->getNewFileName($filename, $extension, $path);
    
    // Function getNewFileName 
    
    public function getNewFileName($filename, $extension, $path)
        {
    
            $i = 1;
            $new_filename = $filename . '.' . $extension;
            while (File::exists($path . $new_filename))
                $new_filename = $filename . '_' . $i++ . '.' . $extension;
            return $new_filename;
    
        }
    

相关问题