PHP dosyası yükleme sorun

2 Cevap php

Benim bir PHP komut dosyası ile son derece garip bir sorun yaşıyorum.

I'm uploading a couple of files and having PHP put them all in one folder. I've have trouble with random files being sent and random ones not being sent. So I debugged it and I got a very weird result from the $_FILES[] array.

Ben 3 dosya ile çalıştı.

$_FILES["addFile"]["name"] 3 dosyaların isimlerini tutar.

Sen $_FILES["addFile"]["tmp_name"] PHP dosyaları kopyalamak için kullandığı 3 geçici adlarını tutmak için beklediğiniz, ama öyle değil. Bu sadece bir isim tutar. Diğer 2 (I görüntülenmesini gizlensin) yükleme sırasında bir hata oluşturabilir boş dizeler vardır

This is very odd. I've tried mulitple situations and it just keeps on happening. This must be something in my settings or perhaps even my code.

İşte benim kod:

$i = 0;
  if (!empty($_FILES['addFile'])) {
    foreach($_FILES['addFile'] as $addFile) {
      $fileToCopy = $_FILES["addFile"]["tmp_name"][$i];
      $fileName   = $_FILES["addFile"]["name"][$i];
      $i++;
      if(!empty($fileToCopy)){
       $copyTo = $baseDir."/".$fileName;
       @copy($fileToCopy, $copyTo) or die("cannot copy ".$fileToCopy." to ".$copyTo);
      }
     }
          exit(0);
   }

Tmp_name boş olduğu için olacak die () fonksiyonu atlama, o yüzden, eğer değeri false olacaktır.

Herkes bu neden olabilir ne biliyor mu?

ayrıca bilgi: Ben WAMP sunucusunu çalıştıran Windows XP kullanıyorum. Önce bu sorun vardı ve ben yüklemek için denedim hangi tüm haritalar acces asla. Windows güvenlik ayarları bence sorun olamaz.

2 Cevap

Alakalı, ama muhtemelen yardım edecek değil: ama kopya daha yüklenen dosyaları işlemek için (biraz) daha iyi bir yol move_uploaded_file olduğunu.

Dosyaları herhangi bir büyük? PHP dosya boyutu sınırları ve bunları upload alabilir zamanı var ...

Burada daha iyi göndermek için ne diyor yazmak girişimi daha:

http://uk3.php.net/manual/en/features.file-upload.common-pitfalls.php

Sizin döngü mantık yanlış. Size hiç ilgi ('type', 'size', vb) birkaç özelliklerini saklar, hangi doğrudan dosya giriş adına bir foreach döngüsü kullanıyor.

Sen ilk dosyadan dosya sayısı almak ve döngü uzunluğu olarak kullanmak gerekir:

if (!empty($_FILES['addFile']) && is_array($_FILES['addFile']['name'])) {
    $length = count($_FILES['addFile']['name']);
    for($i = 0; $i < $length; $i++) {
        $result = move_uploaded_file($_FILES['addFile']['tmp_name'][$i],$baseDir."/" . $_FILES['addFile']['name'][$i]);
         if($result === false) {
            echo 'File upload failed. The following error has occurred: ' . $_FILES['addFile']['error'][$i];
         }
     }
}

Hala sorun yaşıyorsanız, bunu ayıklamak için gereken tüm bilgileri vermelidir hata kodunu kontrol edin.