2015-05-26 14 views
6

sto cercando di caricare l'immagine, ma voglio che se l'immagine esiste già, ho bisogno di rinominare il file. Il problema nel mio codice si presenta quando provo a caricare l'immagine dopo aver rinominato il file. la parte del codice in cui sono affrontato il problema è. dopo la ridenominazione se mi associo il nome del file viene cambiato, ma dopo che io non sono in grado di caricare l'immagine sul serverRinomina immagine durante il caricamento sul server

if(file_exists($target_file)) 
    { 
     $new_filename = uniqid() . '.' . $fileData['imageFileType']; 
     rename($target_file, $new_filename); 
     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) 
      { 
       $name=basename($_FILES["fileToUpload"]["name"]); 
       echo $name; 
      } 
     else 
      { 
       echo "Sorry, there was an error uploading your file."; 
      } 
    } 
else  
    { 
     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) 
      { 
       $name=basename($_FILES["fileToUpload"]["name"]); 
       echo $name; 
      } 
     else 
      { 
       echo "Sorry, there was an error uploading your file."; 
      } 

    } 

l'intero codice che ho per il caricamento dell'immagine è

<?php 
require 'connection.php'; 

$target_dir = "catpic/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 
if(isset($_POST["submit"])) 
    { 
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
     if($check !== false) 
      { 
       //echo "File is an image - " . $check["mime"] . "."; 
       $uploadOk = 1; 
      } 
     else 
      { 
       echo "File is not an image."; 
       $uploadOk = 0; 
      } 
    } 

// Check file size 
if ($_FILES["fileToUpload"]["size"] > 500000) 
    { 
     echo "Sorry, your file is too large."; 
     $uploadOk = 0; 
    } 

// Allow certain file formats 
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") 
    { 
     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
     $uploadOk = 0; 
    } 

// Check if $uploadOk is set to 0 by an error 
if ($uploadOk == 0) 
    { 
     echo "Sorry, your file was not uploaded."; 
     // if everything is ok, try to upload file 
    } 
else 
    { 
     if(file_exists($target_file)) 
      { 
       $new_filename = uniqid() . '.' . $fileData['imageFileType']; 
       rename($target_file, $new_filename); 
       if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) 
        { 
         $name=basename($_FILES["fileToUpload"]["name"]); 
         echo $name; 
        } 
       else 
        { 
         echo "Sorry, there was an error uploading your file."; 
        } 
      } 
     else  
      { 
       if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) 
        { 
         $name=basename($_FILES["fileToUpload"]["name"]); 
         echo $name; 
        } 
       else 
        { 
         echo "Sorry, there was an error uploading your file."; 
        } 

      } 
    } 
?> 
+0

puoi spiegare un po 'di più l'errore? – Zgr3doo

+0

@ Zgr3doo l'errore è che la mia immagine non viene caricata dopo la parte di ridenominazione. se carico l'immagine per la prima volta va bene, ma se carico la stessa immagine la prossima volta non viene caricata anche se il suo nome viene cambiato – roy

+0

Ti manca il percorso nel tuo $ new_filename - potrebbe anche essere una buona idea usare il modo che viene comunemente utilizzato negli script di caricamento dei file e assegna un hash casuale come nome ai file caricati e salva questo hash nel database insieme all'ID del file. – Zgr3doo

risposta

2

Ti manca percorso nel $ new_filename

confrontare entrambe le dichiarazioni

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 

$new_filename = uniqid() . '.' . $fileData['imageFileType']; 

sono upd CORTEGGIAMENTO la mia risposta per abbinare il vostro suggerimento provare a sostituire questa sezione del codice

$new_filename = uniqid() . '.' . $fileData['imageFileType']; 
rename($target_file, $new_filename); 

con

$new_filename = $target_dir . uniqid() . '.' . $imageFileType; 
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $new_filename)){ 

sufficiente aggiungere $ target_dir e basta eliminare rename() come la sua non necessario

fondamentalmente ciò che hai fatto nel codice precedente quando il file esisteva durante il caricamento che stavi cercando di rinominare vecchio file usando rename() che probabilmente non ha avuto successo e dopo che stavi cercando di caricare un nuovo file con lo stesso nome in conflitto

+0

ho provato anche questo, ma la mia condizione sta andando a parte solo solo se il file esiste già – roy

+0

Vedo che quando il file esiste già si rinomina il vecchio file e dopo che si sta ancora tentando di caricare su target_file è corretto? – Zgr3doo

+0

puoi verificare se la rinomina ha avuto successo? – Zgr3doo

Problemi correlati