-2

同じ名前のファイルが既にアップロードされている場合、ファイルの名前を変更するようにコードを記述する必要があります。たとえば、「internet.jpg」をアップロードしたが、このファイルがサーバー側と bd に既に存在する場合、システムは「internet_2.jpg」に名前を変更します。

私のコード:

    <?php

mysql_connect("localhost", "user", "user") or die(mysql_error()) ;
mysql_select_db("view") or die(mysql_error()) ;

if ($_FILES["imagen"]["error"] > 0){
  echo "ha ocurrido un error";
} else {

  $permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png");
  $limite_kb = 100;

  if (in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb * 1024){

    $ruta = "./image/" . $_FILES['imagen']['name'];

      $resultado = @move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);   
      if ($resultado){
        $nombre = $_FILES['imagen']['name'];

        @mysql_query("UPDATE product SET  image='data/$nombre' Where id=55")  ;

        echo "la imagen ha sido actualizada exitosamente";
        echo "

    ";
      } else {
        echo "ocurrio un error al mover el archivo.";
      }

  } else {
    echo "archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
  }
}

?>

- - - - - - - - - - - ありがとう - - - - - - - - - - - - - - --

thank you very much Farhan Ihsas, your code worked perfect!
 I just change two lines

$new_name =     $rand . '_'.   $dotName ;

and

@mysql_query("UPDATE product SET  image='./image/$new_name' Where product_id=55")  ;


Thanks for such a quick response!

thank you both ( Farhan Ihsas and Kieran ) 
4

2 に答える 2

0

file_existsmove_uploaded_fileの組み合わせを使用したい

例えば

function setFilename($file, $count = 1) {
   if (file_exists($file)) {
       return setFilename($file, $count++);
   } else {
       $path_parts = pathinfo($file);
       move_uploaded_file($file, "{$fileData['dirname']}/{$path_parts['filename']}_{$count}.{$path_parts['extension']}";  
   }
}
于 2013-08-18T16:49:53.553 に答える
0

コードにエラーはないと思いますので、行を見つけて置き換えてください..

if(in_array($_FILES['imagen']['type'],$permitidos) && $_FILES['imagen']['size'] <=$limite_kb * 1024){

$fileName = $_FILES['imagen']['name'];
$ruta = "./image/" . $fileName ;
if (file_exists($ruta)) {

$dotType = pathinfo( $fileName, PATHINFO_FILENAME);
$rand = rand(111, 2333);
$dotName = str_replace('.' . $dotType, '', $fileName) ;
$new_name = $dotName . '_' .  $rand . '.'.  $dotType ;

$ruta = "./image/" . $new_name;
} 
$resultado = @move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);    
于 2013-08-18T17:42:26.240 に答える