2015-05-26 10 views
6

Resim yüklemeye çalışıyorum, ancak görüntü zaten varsa, dosyayı yeniden adlandırmak istiyorum. Kodumdaki sorun, dosyayı yeniden adlandırdıktan sonra görüntüyü yüklemeye çalıştığımda ortaya çıkar. Sorunla karşılaştığım kodun kısmı. Yeniden adlandırma işleminden sonra ben değişmiş olur dosyanın adını yankı ama eğer ondan sonra ben sunucusuna resim yüklemek mümkün değilimgörüntüyü sunucuya yüklerken yeniden adlandırma

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."; 
      } 

    } 

i resmi yüklenirken için sahip tüm kod

<?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

Hatanın ne olduğunu biraz daha açıklayabilir misiniz? – Zgr3doo

+0

@ Zgr3doo, hatanın yeniden adlandırma kısmından sonra görüntümün yüklenmemesidir. ilk kez görüntüyü yüklerseniz iyi olur, ancak bir dahaki sefere aynı resmi yüklediğimde adının değişmesine rağmen yükleme yapılmazsa – roy

+0

$ new_filename'ınızdaki yolu kaçırıyorsunuzdur - yolu kullanmak iyi bir fikir olabilir. Bu, dosya yükleme komut dosyalarında yaygın olarak kullanılır ve yüklenen dosyalara bir ad olarak rastgele karma atar ve bu karma değeri dosya kimliğiyle birlikte veritabanına kaydeder. – Zgr3doo

cevap

2
olduğunu

Sen $ new_filename yolu eksik

hem beyanlar

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

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

Ben upd olduğum karşılaştırmak Cevabımı ating Öneriniz temelde neyi

gerekli değildir onun gibi) sadece $ target_dir ekleyip sadece yeniden adlandırma (silme

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

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

ile kod bölümünü değiştirmek için denemek maç için Yükleme sırasında dosya mevcut olduğunda önceki kodda yaptınız, eski dosyayı rename() kullanarak başaramayacaksınız, muhtemelen başarılı olamayacaksınız ve bundan sonra aynı çakışma adıyla yeni bir dosya yüklemeye çalışıyorsunuz demektir

+0

Bunu da denedim ama dosyam zaten var zaten dosya zaten var zaten – roy

+0

var Ben dosya zaten var eski dosya yeniden adlandırma ve sonra hala target_file yüklemeye çalıştığını görmek doğru olduğunu görüyor musun? – Zgr3doo

+0

Yeniden adlandırmanın başarılı olup olmadığını kontrol edebilir misiniz? – Zgr3doo

İlgili konular