0

ファイルが既に存在する場合は、ファイルのコピーをコピーして名前を変更する必要があります

$pastaTemp = $_FILES['imagem_principal']['tmp_name'];
$pastaUpload = $_SERVER['DOCUMENT_ROOT']."/casaunica/imagens/acabamentos/";
$arquivo = $pastaUpload . $_FILES['imagem_principal']['name']; //filename.jpg

if(!file_exists($pastaUpload. $_FILES['imagem_principal']['name'])){
      $arquivo = $pastaUpload . $_FILES['imagem_principal']['name'];
} else {
    $nome_arquivo = explode(".",$_FILES['imagem_principal']['name']);
       do {
          $para = $nome_arquivo[0]."_".$i.".".$nome_arquivo[1];
          $nome_novo = rename($arquivo, $pastaUpload . $para);
          $arquivo = $pastaUpload .$nome_novo;
          $i++; 
       } while(file_exists($pastaUpload.$_FILES['imagem_principal']['name']));
}

出力: filename.jpg_1

ファイル名_2.jpg

古いファイルを置き換えることはできません..そのため、ループで作成する必要はありませんが、ファイルがアップロードされるたびに番号を変更する必要があります

4

1 に答える 1

1

このコードを試して、うまくいくかどうか教えてください

関数

<?php
  function recursive_naming( $file, $i = 1 ) {
    $dirname    = dirname( $file ).DIRECTORY_SEPARATOR;
    $filename   = pathinfo( $file, PATHINFO_FILENAME );
    $extension  = pathinfo( $file, PATHINFO_EXTENSION );

    if ( !file_exists( $file ) ) {
      return $file;
    }
    $filename = preg_replace( '/_\d+$/', '', $filename );
    $file = $dirname.$filename."_".$i.".".$extension;
    $i++;
    return recursive_naming( $file, $i );
  }
?>

例:

<?php
  $pastaTemp    = $_FILES['imagem_principal']['tmp_name'];
  $pastaUpload  = $_SERVER['DOCUMENT_ROOT']."/casaunica/imagens/acabamentos/";
  $arquivo      = recursive_naming( $pastaUpload.$_FILES['imagem_principal']['name'] );
?>

存在する場合、または存在するfilename_2.jpg場合なども出力されます...filename.jpgfilename_3.jpgfilename_2.jpg

于 2013-07-24T18:19:03.490 に答える