2014-05-24 16 views
5

Ich muss prüfen, ob eine Datei einen gültigen MIME-Typ hat, ob die Dateigröße in Ordnung ist und ob die Abmessungen in Ordnung sind, dann lade die Datei hoch. SoWie zeige ich eine benutzerdefinierte Fehlermeldung in DropzoneJS an?

, wenn alles in Ordnung ist, kann ich verwenden:

complete: function(file){ 
    // do something here. 
} 

aber was ist, wenn die Größe der Datei ungültig war? In meinem PHP-Skript kehre ich eine Fehlermeldung:

return json_encode(['error' => 'size is invalid']); 

ODER

return Response::json(['error' => 'size is invalid'], 500 ]; 
// this is Laravel 4 syntax. returns a json array and 500 as status code. 

aber wie kann ich damit umgehen, dass error in DropzoneJS?

Ich habe versucht, einen zweiten Parameter der complete() Funktion hinzuzufügen, aber es funktioniert nicht.

complete: function(file, response){ 
    console.log(response); // this does not work. 
} 

Antwort

7

Um die Antwort, nachdem die Datei in DropzoneJS dieser auf den Server-Einsatz vorgelegt wurde:

success: function(file, response) { 
    alert(response); 
} 

Und die Datei zu validieren, bevor sie verwenden diese Hochladen:

complete: function(file) { 
    if (file.size > 3.5*1024*1024) { 
    alert("File was Larger than 3.5Mb!"); 
    return false; 
    } 

    if(!file.type.match('image.*')) { 
    alert("Upload Image Only!"); 
    return false; 
    } 
} 

Wenn Ihr Server gibt response in JSON zurück, Sie müssen JSON.parse vor alert ing es verwenden.

Ich hoffe, es wird dir helfen! Prost! :)

+2

Nur etwas hinzufügen Ich denke, ist nützlich: Sie Ereignisse hören sollte (http://www.dropzonejs.com/#toc_8) nicht umgeschrieben (https://github.com/enyo/dropzone/issues/297). Prost! :) – amandasantanati

+0

@amandasananati Das ist wirklich gut, es wird Ihnen erlauben, mehr Funktionalität hinzuzufügen. +1 für Links –

1

einfach zu vereinfachen, was @amandasantanati sagte so klicken Sie nicht um:

Sie complete: ... nicht tun, sondern:

init: function() 
    { 
     this.on("complete", function(file) { 
      if (file.size > 3.5*1024*1024) { 
       this.removeFile(file); 
       alert('file too big'); 
       return false; 
      } 

      if(!file.type.match('image.*')) { 
       this.removeFile(file); 
       alert('Not an image') 
       return false; 
      } 
     }); 
    }, 
1

Stellen Sie den HTTP-Antwortcode http_response_code (415) ; // Nicht unterstützter Medientyp oder http_response_code (415); // Nicht akzeptabel

function showError($message) 
    { 
     http_response_code(415); 
     die($message); 
    } 

enter image description here

Verwandte Themen