2016-12-06 1 views
0

Mein Hauptproblem ist, dass ich zwei verschiedene Dateiupload-Links habe und beide für verschiedene Zwecke sind. Für zB: a) Ist eine Lizenz b) Ist ein Foto, also muss ich beides hochladen verschiedene Standorte. So, was ich wollte, ist in der Lage, Dateieigenschaften als ein numerisches Array anstelle eines assoziativen Arrays zu adressieren. Ich bin auch offen für Vorschläge, wie man zwischen den zwei Dateien unterscheidet. HierSo zeigen Sie Dateien als normales Array an

ist das Eingangscodebeispiel:

<label for="file-upload" class="custom-file-upload"> 
    <i class="fa fa-cloud-upload"> 
    </i>Upload License 
</label> 
<input id="file-upload" name="files[]" type="file"> 
<label for="file-upload" class="custom-file-upload"> 
    <i class="fa fa-cloud-upload"> 
    </i>Upload Photo 
</label> 
<input id="file-upload" name="files[]" type="file"> 

Hier ist der Upload-Skript (HINWEIS-Ich habe auch versucht array_values ​​() mit)

<?php 
$name  = $_POST['name']; 
$email  = $_POST['email']; 
$tmpname = array_values($_FILES['files']['tmp_name']); 
$filename = array_values($_FILES['files']['name']); 
$filesize = array_values($_FILES['files']['size']); 
$filetype = array_values($_FILES['files']['type']); 
$date12  = date('Y-m-d'); 
//for photo 
$file_name2 = $filename[0]; 
$ext2  = pathinfo($file_name2, PATHINFO_EXTENSION); 
$file_name22= $name.".".$ext2; 
$file_size2 = $filesize[0]; 
$file_tmp2 = $tmpname[0]; 
$file_type2 = $filetype[0]; 
$extensions = array("jpg","jpeg","png","pdf","zip","rar"); 
$type  = "photo"; 
$desired_dir = "user_data"; 

if(in_array($ext2,$extensions) === false) 
{ 
    $errors2 = "Extension not allowed!"; 
} 
else 
{ 
    //Added file size limit 
    if($file_size2 > 2097152) 
    { 
     $errors2 = 'File size must be less than 2 MB'; 
    } 
    if(empty($errors2) == true) 
    { 
     // Inserting info into database for easy retrieval 
     $query1 = $this->pdo->prepare(" 
      INSERT into upload_data (NAME,EMAIL,FILE_NAME,FILE_SIZE,FILE_TYPE,date1,file_ext,type) 
      VALUES('$name','$email','$file_name22','$file_size2','$file_type2','$date12','$ext2','$type') 
     "); 
     $query1->execute(); 

     if(is_dir($desired_dir) == false) 
     { 
      mkdir("$desired_dir", 0700);  // Create directory if it does not exist 
     } 
     if(is_dir("$desired_dir/".$file_name22) == false) 
     { 
      move_uploaded_file($file_tmp,"user_data/".$type.$file_name22); 
     } 
     else 
     { 
      //rename the file if another one exist 
      $new_dir = "user_data/".$file_name22.time(); 
      rename($file_tmp2,$new_dir) ; 
     } 
     echo " 
     <script> 
     Materialize.toast('Successfully Uploaded!', 8000) 
     </script>"; 
    } 
    else 
    { 
     echo " 
     <script> 
     Materialize.toast($errors, 8000) 
     </script>"; 
    } 
} 

Danke

+0

vor allem nie eine ID zweimal verwenden. Und um Ihre eigentliche Frage zu beantworten: Was haben Sie versucht, was bekommen Sie und warum funktioniert es nicht? – Cashbee

+0

haben Sie versucht, sie in html anders zu benennen und dann die Dateien mit $ _FILES ['license'] und $ _FILES ['photo'] zu bekommen? – Cashbee

+0

Ja, ich habe versucht, sie anders zu benennen, aber das scheint nicht zu funktionieren. Alles was ich weiß ist, dass sie nicht hochgeladen werden. Ich habe auch ein Upload-Skript, aber das ist nicht der Schuldige hier. Ich werde das auch als hinzufügen eine Bearbeitung hier –

Antwort

0

Um Um Dateien in ein Formular hochzuladen, benötigt Ihr Formular enctype = "multipart/form-data". benennen Sie die verschiedenen Eingaben unterschiedlich, z. B. Lizenz und Foto. Dann können Sie auf die Dateien in PHP mit $ _FILES ['Lizenz'] und $ _FILES ['Foto'] zugreifen.

+0

Mein Formular hat das bereits enthalten –

+0

Habe das gleiche nochmal versucht, indem ich einige Fehler entfernt habe, die wahrscheinlich im Code waren, jetzt funktioniert es.Vielen Dank für die Hilfe trotzdem! Deine Antwort ist sowieso aktuell. –