[英]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_1
, file_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.