繁体   English   中英

更改文件名Laravel 4

[英]Change file name Laravel 4

如何在Laravel 4中更改上传文件的名称。到目前为止,我一直在这样做:

$file = Input::file('file'); 
$destinationPath = 'public/downloads/';
if (!file_exists($destinationPath)) {
    mkdir("./".$destinationPath, 0777, true);
}
$filename = $file->getClientOriginalName();

但是,如果我有2个同名文件,我想它会被重写,所以我想在第二个文件名的末尾添加类似(2)或完全更改文件名

第一步是检查文件是否存在。 如果没有,请使用pathinfo()提取文件名和扩展名,然后使用以下代码重命名:

$img_name = strtolower(pathinfo($image_name, PATHINFO_FILENAME));
$img_ext =  strtolower(pathinfo($image_name, PATHINFO_EXTENSION));

$filecounter = 1; 

while (file_exists($destinationPath)) {
    $img_duplicate = $img_name . '_' . ++$filecounter . '.'. $img_ext;
    $destinationPath = $destinationPath . $img_duplicate;  
}

只要条件file_exists($destinationPath)返回true,循环将继续将文件重命名为file_1file_2等。

我知道这个问题已经关闭,但这是一种检查文件名是否已被采用的方法,因此原始文件不会被覆盖:

(......在控制器中......)

$path = public_path().'\\uploads\\';
$extension = pathinfo($fileName, PATHINFO_EXTENSION);
$original_filename = pathinfo($fileName, PATHINFO_FILENAME);
$new_filename = $this->getNewFileName($original_filename, $extension, $path);
$upload_success = Input::file('file')->move($path, $new_filename);

这个函数得到一个“未使用”的文件名:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM