Nasıl seçmek ve HTTP POST kullanarak, HTML ve PHP ile birden fazla dosya yükleyebilirsiniz?

8 Cevap php

Ben tecrübe <input type="file"> kullanarak tek bir dosya yükleme ile yapıyor olması. Ancak, sorun bir defada birden fazla yükleme yapıyorum yaşıyorum.

Örneğin, ben o zaman tek seferde, onları sunucuya yükleyin, görüntülerin bir dizi seçmek için muktedir istiyorum.

It would be great to use a single file input control, if possible.

Herkes bunu gerçekleştirmek için nasıl biliyor mu? Teşekkürler!

8 Cevap

Bu HTML5 mümkündür:

http://en.wikipedia.org/wiki/File_select#Multiple_file_selection

Örnek:

<!doctype html>
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <form>
        <input type="file" multiple>
        </form>
    </body>
</html>

İşte o dosya iletişim içinde 3 öğe seçtikten sonra Safari gibi görünüyor:

safari_rendering

Eğer birden fazla dosya yükleme, aslında onun güzel temelini oluşturmak için yapmanız gereken birkaç şey vardır. Java, Ajax, Flash kullanmaya gerek yoktur. Sadece ile başlayan normal bir dosya upload form oluşturmak:

<form enctype="multipart/form-data" action="post_upload.php" method="POST">

Sonra başarı için anahtar;

<input type="file" name="file[]" multiple />

do NOT forget those brackets! In the post_upload.php try the following:

<?php print_r($_FILES['file']['tmp_name']); ?>

Eğer dosya 'numara' örneği ile parantez bir üçüncü çifti ile her dosyayı erişebilirsiniz anlamına gelecektir tmp_name veri ile bir dizi olsun fark:

$_FILES['file']['tmp_name'][0]

Sen seçilmiş dosyaların sayısını saymak için php sayısı () kullanabilirsiniz. Goodluck widdit!

Epoxys

Eğer Gözat'ı seçtiğinizde görüntüler dosya seçici iletişim birden fazla dosya seçmek istiyorsanız, o zaman daha çok şans vardır. Bir Java uygulaması veya benzer bir şey (ben bunu bulursam ben güncellenir, küçük bir flash dosyasını kullandığınız bir olduğunu düşünüyorum) kullanmanız gerekecektir. Şu anda tek bir dosya girişi tek bir dosya seçilmesini sağlar.

Eğer birden fazla dosya girişlerini kullanarak bahsediyoruz, o zaman birini kullanarak pek fark olmamalıdır. Bazı kod gönderebilir ve ben daha fazla yardımcı olmak için çalışacağız.


Update: There is one method to use a single 'browse' button that uses flash. I have never personally used this but I have read a fair amount about it. I think its your best shot.

http://swfupload.org/

Firefox 5 tam çözüm:

<html>
<head>
</head>
<body>
 <form name="uploader" id="uploader" action="multifile.php" method="POST" enctype="multipart/form-data" >
  <input id="infile" name="infile[]" type="file" onBlur="submit();" multiple="true" ></input> 
 </form>

<?php
echo "No. files uploaded : ".count($_FILES['infile']['name'])."<br>"; 


$uploadDir = "images/";
for ($i = 0; $i < count($_FILES['infile']['name']); $i++) {

 echo "File names : ".$_FILES['infile']['name'][$i]."<br>";
 $ext = substr(strrchr($_FILES['infile']['name'][$i], "."), 1); 

 // generate a random new file name to avoid name conflict
 $fPath = md5(rand() * time()) . ".$ext";

 echo "File paths : ".$_FILES['infile']['tmp_name'][$i]."<br>";
 $result = move_uploaded_file($_FILES['infile']['tmp_name'][$i], $uploadDir . $fPath);

 if (strlen($ext) > 0){
  echo "Uploaded ". $fPath ." succefully. <br>";
 }
}
echo "Upload complete.<br>";
?>

</body>
</html>

Eğer birden fazla giriş alanları kullanmak Eğer name = "dosyayı []" (ya da başka herhangi bir ad) ayarlayabilirsiniz. Eğer bunları upload O zaman onları bir diziye koyacağız ($_FILES['file'] = array ({file_array},{file_array]..))

bir daha Tabanlı Flash ücretsiz Uploader, Uploadify var.

Holger - Amidalla Search Engine

ilk böyle formu yapmak gerekir:

<form method="post" enctype="multipart/form-data" >
   <input type="file" name="file[]" multiple id="file"/>
   <input type="submit" name="ok"  />
</form> 

bu doğru. şimdi form kodu altında veya istediğiniz herhangi bir sayfaya bu kodu ekleyin

<?php
if(isset($_POST['ok']))
   foreach ($_FILES['file']['name'] as $filename) {
    echo $filename.'<br/>';
}
?>

çok kolay ... bitirecek

partial answer: pear HTTP_UPLOAD can be usefull http://pear.php.net/manual/en/package.http.http-upload.examples.php

tam bir örnek birden fazla dosya için vardır