2016-07-10 6 views
0

Wenn der Chunking-Success-Endpunkt in der Anwendung JSON wie {"error": "reason..."} zurückgibt (z. B. konnte der Server die Chunks nicht wiederherstellen), wird das Ereignis onError nicht ausgeführt namens.So lösen Sie onError vom Chunking-Erfolgsendpunkt in Fine-Uploader

Nur um zu klären, das onError Ereignis ist aufgerufen, wenn einzelne Chunks fehlschlagen. Es ist die letzte Erfolgsanfrage, mit der ich Probleme habe.

Ich bin mir nicht sicher, was ich vermisse. Sollte ich anders damit umgehen?

Meine Konfiguration ist unten. Danke im Voraus!

var uploader = $('#fine-uploader').fineUploader({ 
     template: 'qq-template', 
     debug: true, 
     callbacks: { 
      onAllComplete: function(succeeded, failed) { 
       $('#doclib_tree').jstree(true).refresh() 
       if (failed.length > 0) { 
        alert("Error: Some files were not uploaded"); 
       } else { 
        if (succeeded.length > 0) { 
         alert("Successfully uploaded " + succeeded.length + " file(s)"); 
        } 
        this.reset(); 
        toggle_upload(); 
       } 
      }, 
      onError: function(id, name, errorReason, xhrOrXdr) { 
       alert("Error uploading " + name + ". Reason: " + errorReason) 
      }, 
      onSubmit: function(id, name) { 
       var promise = new qq.Promise(); 
       var dest = document.getElementById('dest_label').innerHTML.replace(/ > /g, "/") 
       $.ajax({ 
        'type': 'POST', 
        'async': false, 
        'url': "/documents/exists" , 
        'data': { 
         'parents' : get_path(dest), 
         'name': name, 
        }, 
        'success': function(data, textStatus, jqHXR) { 
         if (check_session(data)) { 
          promise.failure(); 
         } else { 
          if (confirm("The file '" + dest + "/" + name + "' already exists. Replace?")) 
           promise.success(); 
          else 
           promise.failure(); 
         } 
        }, 
        'error': function(jqHXR, textStatus, errorThrown) { 
         promise.success(); 
        } 
       }); 
       return promise; 
      }, 
     }, 
     chunking: { 
      enabled: true, 
      partSize: 20000000, // 20MB 
      success: { 
       endpoint: "documents/upload?success=1", 
      } 
     }, 
     resume: { 
      enabled: true, 
      recordsExpireIn: 1, // 1 day 
     }, 
     request: { 
      endpoint: "/documents/upload", 
     }, 
     autoUpload: true 
    }); 
+0

Wird die Datei in der Benutzeroberfläche tatsächlich als fehlerhaft markiert oder funktioniert das nicht? –

+0

Upload wird von der Benutzeroberfläche als erfolgreich angesehen. Wenn jedoch der chunking-success-Endpunkt einen 502 oder ungültigen JSON zurückgibt, wird das onError-Ereignis _does_ ausgelöst und die Datei wird als fehlgeschlagen markiert. –

Antwort

0

Aus der Dokumentation unter dem Chunking Erfolg Abschnitt:

Für eine erfolgreiche Antworten können Sie einen leeren Körper mit einem Status von 200-204 zurückzukehren. Jeder andere Statuscode wird als Fehler erkannt.

Mit anderen Worten, Fehler anzuzeigen, müssen Sie einen Statuscode zurückgeben, dass Fehler anzeigt. Wählen Sie den am besten geeigneten Statuscode im Kontext des Fehlers aus. Zu diesem Zeitpunkt sollte Fine Uploader feststellen, dass die Datei in irgendeiner Weise fehlerhaft ist, und Ihr onError-Handler wird mit der von Ihrem Server zurückgegebenen error-Eigenschaft aufgerufen.

+0

Das funktioniert. Danke, dass du das unterstrichen hast! –