Çoklu dosya PHP / Javascript ile yükleme ve hiçbir flaş

4 Cevap php

Ben aynı zamanlarda birden fazla dosya yükleme sağlayan bir web sayfası yapmaya çalışıyorum. Ben JPG, JPEG, PNG ve GIF gibi en yaygın görüntülere dosya uzantılarını sınırlayacaktır.

Ben bu konuda biraz araştırma yaptık ve her yerde ben bu flaş bulunuyor bakmak ve bu flaş.

Gerçekten flaş kullanmak istemiyorum. Özellikle multifile yükleme sağlamak için en yaygın kullanılan yöntem devre dışı bırakır Flash 10 ile birlikte.

Ne arıyorum daha fazla giriş alanları, formun altındaki bir final yükleme düğmesi ile bir Gözat düğmesi ile her ve ardından oluşturma tutmak için bir yoldur. Bir Javascript ile yeni giriş alanları oluşturma gerçekten büyük bir anlaşma nog edilir.

Yani bu nasıl çalıştığını merak ediyorum. Ben tüm dosya giriş yüzden bu çözmek için bir PHP kodu 1 parça kullanabilirsiniz aynı adı bağladıkları alanlar vermek gerekir mi? Veya dosyaları sumbitted oylandı howmany PHP algılamak için bir yolu var mı ve sadece bir iç bir dosya ayrıştırma için kodu koymak için döngü?

4 Cevap

İşte algoritma:

Formunuza yeni dosya giriş alanları ekleyin. Bu alanda her biri benzersiz bir adı olmalıdır. Sonra, sunucu tarafında, sen $ _FILES dizi aracılığıyla döngü yüklendi kaç dosya arıyor ve onları ele.

Sen 'dosyası' girdileri eklemeye devam ama '[] yükleyebilir' gibi bir şey bir adı kullanabilirsiniz

<input type="file" name="upload[]">

Sonra $ HTTP_POST_FILES ['upload'] içinde sizin gibi döngü üzerinde can dosyaları bir dizi olacak

foreach ($_FILES['upload'] as $file) {
    echo $file['size'];
}

Yeni yükleme alanları eklemek için JavaScript kullanarak, ayrıca JavaScript şeklinde yükleme alanlarının sayısı ile bazı "gizli" girdi alanı güncelleştirmek olabilir. Gönder düğmesini bir kez bu şekilde, bu gizli değeri teslim edilmelidir ve tüm yüklenen dosyalar için $ _FILES dizi ayrıştırmak için önemsiz olacaktır.

Eğer dosya sayısına makul maksimum limiti varsa, bu statik şeklinde birçok dosya yükleme alanları, daha sonra dinamik hepsini oluşturmak yerine, gereksiz olanları gizlemek için JavaScript kullanmak dahil etmek daha iyi olacaktır. JavaScript kullanılamaz Sonra form hala çalışabilir.

Yan not: teknik, tek bir HTML dosyası yükleme formları zaten çoklu dosya yükleme biçimleridir. HTML form kodlama standardına göre, bir Gözat iletişim kutusunda birden çok dosya seçmek gerekir, ve bir karma / MIME yapısı olarak teslim olurdum.

Ancak, hemen hemen hiçbir şey aslında bunu destekler. Opera eski sürümleri, istemci tarafında do (ve, bence, bir çeşit, muhtemelen Viola eski bir tarayıcı testi), ve sunucu tarafında bir kaç form ayrıştırma bileşenleri, ancak PHP yerleşik-ins. Her durumda UI çok kullanışlı değil, bu yüzden size çok eksik değil.