2016-06-07 17 views
1

Ich versuche, Dateien in PHP laden Sie die folgende Funktion:PHP-Datei verschiedene Arten von Dateien hochladen

public function fileUpload($FILES){ 
    $num_of_uploads = 1; 
    $max_file_size = 1048576; //can't be larger than 1 MB 

    $T = array(); 
    foreach($_FILES["file"]["error"] as $key=>$value){ 

     if($_FILES["file"]["name"][$key] != ""){ 

      if($value == UPLOAD_ERR_OK){ 

       $v = array(); 

       $origfilename = $_FILES["file"]["name"][$key]; 
       $filename = explode(".", $_FILES["file"]["name"][$key]); 
       $filenameext = $filename[count($filename) - 1]; 

       $v['name'] = $filename[0]; 
       $v['extension'] = $filename[1]; 
       $v['type'] = $_FILES["file"]["type"][$key]; 

       unset($filename[count($filename) - 1]); 
       $filename = implode(".", $filename); 
       $filename = "file__" . time() . "." . $filenameext; 

       if($_FILES["file"]["size"][$key] < $max_file_size){ 
        $v['content'] = file_get_contents($_FILES["file"]["tmp_name"][$key]); 
        $T[] = $v; 
       }else{ 
        throw new Exception($origfilename . " file size inaccepted!<br />"); 
       } 

      }else{ 
       throw new Exception($origfilename . " Error of upload <br />"); 
      } 
     } 
    } 
    return $T; 
} 

Diese Funktion arbeitet gut mit txt-Typen, aber wenn ich pdf bin Tests oder gif oder jpg, gibt es eine beschädigte Datei zurück.

+0

überprüfen Sie php.ini-Datei für die maximale Dateigröße Upload und maximale Postgröße. Stellen Sie sicher, Upload-Größe ist nicht größer als das – Krunal

+0

Ich habe kein Problem mit der Dateigröße, ich teste mit 70Ko-Datei und es funktioniert nicht – phoenix

+0

Welchen Fehler erhalten Sie? – Krunal

Antwort

3

Soweit ich weiß, file_get_contents() funktioniert gut auf text/html Typen. Bei anderen Dateitypen sollten Sie jedoch zuerst ihren Textinhalt analysieren, um ihn für die weitere Verarbeitung zu verwenden. Versuchen Sie, im Editor alle .pdf zu öffnen, um den Textinhalt zu sehen.

Für die Zwecke Hochladen verwenden move_uploaded_file() in Ihrem Zyklus, wie folgt aus:

move_uploaded_file($_FILES["file"]["tmp_name"][$key], $filename); 

Natürlich ohne zu versuchen, Textinhalt von hochgeladene Datei zu erhalten.

+0

move_uploaded_file Funktion muss in zweiten Parameter der haben Dateiziel, nicht Dateiname, ** move_uploaded_file ($ _DATEIEN ['Filedata'] ['tmp_name'], $ file_src); ** Hier speichere ich keine Dateien in einem bestimmten Ziel – phoenix

+0

Sicher, aber Dateiname wird funktionieren als Ziel für das aktuelle Arbeitsverzeichnis. Wenn Sie aus irgendeinem Grund Dateiinhalte für den direkten Download verwenden möchten, müssen Sie je nach der aktuellen Dateierweiterung die Header "Content-type" richtig einstellen. – Nevertheless

1

Zum Herunterladen der Datei müssen Sie Header festlegen. Also, am Anfang der Funktion versuchen, eine der folgenden Header für Png oder JPEG-Dateien:

//For png file 
header("Content-Type: image/png"); 
//For jpeg file 
header("Content-Type: image/jpeg"); 
Verwandte Themen