it-swarm.com.de

Wie erhalte ich den Rückgabewert von Dropzone.js?

Ich habe gerade Dropzone.js implementiert, um das Hochladen von Dateien auf meiner Website zu erleichtern. Die Datei wird gut hochgeladen, und nachdem der Upload abgeschlossen ist, gebe ich der Datei eine ID und gebe diese an den Browser zurück.

Das funktioniert gut, außer dass ich nicht weiß, wie ich die ID abfangen kann, die vom Server zurückgegeben wird. In diese SO Antwort Ich habe einen Code gefunden, der das tun soll, aber es funktioniert nicht für mich. Der Code, den ich jetzt habe, wird unten eingefügt.

Weiß jemand, wie ich den vom Server zurückgegebenen Wert erhalten kann? Alle Tipps sind willkommen!

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script type="text/javascript" src="/static/js/external/dropzone.min.js"></script>
    <link href="/static/css/external/dropzone.css" rel="stylesheet">

<script type="text/javascript">
    $(function() {

        Dropzone.options.uiDZResume = {
            success: function(file, response){
                console.log('WE NEVER REACH THIS POINT.');
                alert(response);
            }
        };
    });
</script>

</head>
<body>
<form action="/doc"
      class="dropzone"
      id="my-awesome-dropzone"></form>
</body>
</html>
8
kramer65

Wenn man sich den Quellcode von dropzone.js ansieht, scheint es, dass es viele Ereignisse gibt, die man hören kann.

events: [
  "drop"
  "dragstart"
  "dragend"
  "dragenter"
  "dragover"
  "dragleave"
  "addedfile"
  "removedfile"
  "thumbnail"
  "error"
  "errormultiple"
  "processing"
  "processingmultiple"
  "uploadprogress"
  "totaluploadprogress"
  "sending"
  "sendingmultiple"
  "success"
  "successmultiple"
  "canceled"
  "canceledmultiple"
  "complete"
  "completemultiple"
  "reset"
  "maxfilesexceeded"
  "maxfilesreached"
]

Hier scheint die Veranstaltung "Erfolg" angemessen zu sein.

Ein guter Ausgangspunkt wäre, einen Ereignis-Listener an Ihre Dropzone zu binden und zu sehen, welche Daten Sie zu einem solchen Ereignis erhalten.

$('#my-awesome-dropzone').on('success', function() {
  var args = Array.prototype.slice.call(arguments);

  // Look at the output in you browser console, if there is something interesting
  console.log(args);
});
17
tomaoq
$("#dropzoneForm").dropzone({
    maxFiles: 2000,
    url: "../Uploader/HttpUploadHandler.ashx?param=" + result.prjID,
    success: function(file, response){
        //alert("Test1");
    }
});
8
Rohit Dodiya

Hilft das?

Dropzone.options.myDropzone = {
  init: function() {
        thisDropzone = this;
        this.on("success", function(file, responseText) {
            var responseText = file.id // or however you would point to your assigned file ID here;
            console.log(responseText); // console should show the ID you pointed to
            // do stuff with file.id ...
        });
    }
};

Zum Beispiel habe ich meine eingerichtet, den Serverpfad an den Image-Namen anzuhängen und diesen beim Senden als Wert in ein Formularfeld zu übergeben. Solange Sie responseText so definieren, dass er auf die Datei-ID verweist, sollten Sie eine Rückgabe erhalten.

Dieser Link könnte auch hilfreich sein: https://github.com/enyo/dropzone/issues/244

6
code-sushi

Versuche dies:

Dropzone.options.myAwesomeDropzone = {
    success: function(file, response){
        //alert(response);
        console.log(response);
    }
};
3
Bozu

Für mich geht das

$(function() {
    var myDropzone = new Dropzone(".dropzone");
    myDropzone.on("success", function() {
        alert('Uploaded!');
    });
});
1
Jhonny Jr.

Ich benutze jQuery und das hat bei mir funktioniert:

var dz = $(".my-awesome-dropzone").dropzone()[0];
dz.dropzone.on("success", function (file, response) { ... }));

Beachten Sie, dass die dropzone()-Methode dem DOM-Objekt ein dropzone-Attribut hinzufügt. Sie müssen on() für das object - nicht die jQuery on() aufrufen.

0
andy

Ich wollte dies als Kommentar hinzufügen, kann es aber nicht, da ich einen schlechten Ruf habe.

Für diejenigen unter Ihnen, die immer noch Probleme beim Abrufen der Antwort vom Server haben, wenn Sie Chunking verwenden, codiert Dropzone in dieser Situation eine leere Antwort:

https://github.com/enyo/dropzone/blob/caf200c13fd3608dd6bed122926d5848927f55b4/dist/dropzone.js#L2344

if (allFinished) {
    _this14.options.chunksUploaded(file, function () {
        _this14._finished(files, '', null);
     });
}

Das Abrufen der Antwort scheint also für chunked Uploads nicht unterstützt zu werden.

0
Ovidiu