6

多くの場合、重複を防ぐためにファイル名を作成するときに、サーバー上で異なるファイル名にする必要があります。そして、それに対する最も一般的な答えは、最後にタイムスタンプを追加するか、ファイル名をデータベースに保存し、それらの保存された値を使用して新しい名前を計算することです。これらはすべて良いものですが、長いタイムスタンプを追加することは必ずしもユーザーフレンドリーではなく、データベースに保存することは常にオプションではありません. では、php でファイル名を作成する際に、標準ファイル名を自動インクリメントするにはどうすればよいでしょうか?

4

4 に答える 4

6

この目的のために私が書いた簡単な関数を次に示します。

function incrementFileName($file_path,$filename){
 if(count(glob($file_path.$filename))>0)
 {
     $file_ext = end(explode(".", $filename));
     $file_name = str_replace(('.'.$file_ext),"",$filename);
     $newfilename = $file_name.'_'.count(glob($file_path."$file_name*.$file_ext")).'.'.$file_ext;
     return $newfilename;
  }
  else
  {
     return $filename;
  }
}

利用方法:

$newName = incrementFileName( "uploads/", $_FILES["my_file"]["name"] );
move_uploaded_file($_FILES["my_file"]["tmp_name"],"uploads/".$newName);
于 2013-03-26T09:17:07.857 に答える
1
function incrementFileName($file_path,$filename){
  $array = explode(".", $filename);
  $file_ext = end($array);
  $root_name = str_replace(('.'.$file_ext),"",$filename);
  $file = $file_path.$filename;
  $i = 1;
  while(file_exists($file)){
    $file = $file_path.$root_name.$i.'.'.$file_ext;
    $i++;
  }
  return $file;
}
于 2013-03-26T10:59:06.633 に答える