Visualizzazione dei risultati da 1 a 7 su 7

Discussione: upload file

  1. #1

    upload file

    Buongiorno a tutti, ho trovato in rete uno script per l'upload di immagini che funziona alla perfezione, però c'è un unico problemino. Quando i file hanno lo stesso nome vengano
    sovrascritti, invece vorrei che cambiasse nome del file oppure apparisse un messaggio tipo
    "nome file gia' presente, cambia nome".
    Vi posto il codice:
    codice:
    <?php 
    $idir = "images/";   // Path To Images Directory 
    $tdir = "images/thumbs/";   // Path To Thumbnails Directory 
    $twidth = "125";   // Maximum Width For Thumbnail Images 
    $theight = "100";   // Maximum Height For Thumbnail Images 
    
    if (!isset($_GET['subpage'])) {   // Image Upload Form Below   ?> 
      <form method="post" action="prova3.php?subpage=upload" enctype="multipart/form-data"> 
       File:
     
      <input type="file" name="imagefile" class="form"> 
      
    
     
      <input name="submit" type="submit" value="Sumbit" class="form">  <input type="reset" value="Clear" class="form"> 
      </form> 
    <? } else  if (isset($_GET['subpage']) && $_GET['subpage'] == 'upload') {   // Uploading/Resizing Script 
      $url = $_FILES['imagefile']['name'];   // Set $url To Equal The Filename For Later Use 
      if ($_FILES['imagefile']['type'] == "image/jpg" || $_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg") { 
        $file_ext = strrchr($_FILES['imagefile']['name'], '.');   // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php 
        $copy = copy($_FILES['imagefile']['tmp_name'], "$idir" . $_FILES['imagefile']['name']);   // Move Image From Temporary Location To Permanent Location 
        if ($copy) {   // If The Script Was Able To Copy The Image To It's Permanent Location 
          print 'Image uploaded successfully.
    ';   // Was Able To Successfully Upload Image 
          $simg = imagecreatefromjpeg("$idir" . $url);   // Make A New Temporary Image To Create The Thumbanil From 
          $currwidth = imagesx($simg);   // Current Image Width 
          $currheight = imagesy($simg);   // Current Image Height 
          if ($currheight > $currwidth) {   // If Height Is Greater Than Width 
             $zoom = $twidth / $currheight;   // Length Ratio For Width 
             $newheight = $theight;   // Height Is Equal To Max Height 
             $newwidth = $currwidth * $zoom;   // Creates The New Width 
          } else {    // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height) 
            $zoom = $twidth / $currwidth;   // Length Ratio For Height 
            $newwidth = $twidth;   // Width Is Equal To Max Width 
            $newheight = $currheight * $zoom;   // Creates The New Height 
          } 
          $dimg = imagecreate($newwidth, $newheight);   // Make New Image For Thumbnail 
          imagetruecolortopalette($simg, false, 256);   // Create New Color Pallete 
          $palsize = ImageColorsTotal($simg); 
          for ($i = 0; $i < $palsize; $i++) {   // Counting Colors In The Image 
           $colors = ImageColorsForIndex($simg, $i);   // Number Of Colors Used 
           ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']);   // Tell The Server What Colors This Image Will Use 
          } 
          imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight);   // Copy Resized Image To The New Image (So We Can Save It) 
          imagejpeg($dimg, "$tdir" . $url);   // Saving The Image 
          imagedestroy($simg);   // Destroying The Temporary Image 
          imagedestroy($dimg);   // Destroying The Other Temporary Image 
          print 'Image thumbnail created successfully.';   // Resize successful 
        } else { 
          print '<font color="#FF0000">ERROR: Unable to upload image.</font>';   // Error Message If Upload Failed 
        } 
      } else { 
        print '<font color="#FF0000">ERROR: Wrong filetype (has to be a .jpg or .jpeg. Yours is ';   // Error Message If Filetype Is Wrong 
        print $file_ext;   // Show The Invalid File's Extention 
        print '.</font>'; 
      } 
    } ?>
    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    devi aggiungere un controllo se il file esiste prima di questa riga..
    Codice PHP:
    if(!file_exists($idir."/" .  $_FILES['imagefile']['name'])) {
    $copy copy($_FILES['imagefile']['tmp_name'], "$idir$_FILES['imagefile']['name']);
    } else {
    echo 
    "il file esiste già"

    una roba del genere... cerca anche sul forum o comunque sul manuale http://it.php.net/file_exists

  3. #3
    Be, direi che funziona, intanto ti ringrazio, poi se ci sono altri suggerimenti da parte di altri, ben vengano.

  4. #4
    Ho visto che c'è la funzione rename, come posso utilizzarla in questo script.
    Grazie

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    vado per logica...
    Codice PHP:
    if(!file_exists($idir."/" .  $_FILES['imagefile']['name'])) {
    $copy copy($_FILES['imagefile']['tmp_name'], "$idir$_FILES['imagefile']['name']);
    } else {
    // metto un nuova variabile, con il nuovo nome del file..  
    $new_file_name "001_" $_FILES['imagefile']['name'];
    // destinazione finale
    $path$idir"/" .$new_file_name;
    $copy copy($_FILES['imagefile']['tmp_name'], $path);
    echo 
    "attenzione, il nome del file è stato cambiato in: [b]" $new_file_name "[/b]";

    non l'ho provato perchè non posso.. vedi te...

  6. #6
    Allora c'e' un problemino.
    Se vado a caricare prova.jpg ed è gia' esistente, diventa giustamente 001_prova.jpg.
    Ma quando vado a ricaricare prova.jpg, ridiventa 001_prova.jpg sovrascrivendolo, e questo non va bene. Bisognerebbe fare in modo che incrementi di 1 oppure aggiungere al nomefile la data e ora del giorno.
    Grazie.

  7. #7
    Ho aggiunto al nome del file la data e l'ora così il nome è sempre diverso.


    codice:
    if(!file_exists($idir."/" .  $_FILES['imagefile']['name'])) { 
    $copy = copy($_FILES['imagefile']['tmp_name'], "$idir" . $_FILES['imagefile']['name']); 
    } else { 
    // metto un nuova variabile, con il nuovo nome del file..  
    $data = date ("d-m-Y H:i:s");
    $new_file_name = $data . $_FILES['imagefile']['name']; 
    // destinazione finale 
    $path= $idir. "/" .$new_file_name; 
    $copy = copy($_FILES['imagefile']['tmp_name'], $path); 
    echo "attenzione, il nome del file è stato cambiato in: " . $new_file_name . ""; 
    }
    Ora però come devo fare per aggiungere la data al nome della thumb?
    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.