Dropzone Chunking chunksUploaded не вызывается - PullRequest
0 голосов
/ 14 марта 2020

У меня есть эта конфигурация dropzone, и я собираюсь использовать чанкинг.

До сих пор мне удалось отправить файл и записать несколько кусков в console.log. Однако по какой-то причине chunksUploaded не вызывается

Dropzone.options.dropzone = {
    url:"@Url.Action("SaveC", "Document", new { area="Document"})",
    autoProcessQueue: false,
    addRemoveLinks: true,
    uploadMultiple: false,
    parallelUploads: 1,
    chunking: true,
    forceChunking: true,
    chunkSize: 100000,
    parallelChunkUploads: true,
    retryChunks: true,
    retryChunksLimit: 3,
    params: function (files, xhr, chunk) {
        if (chunk) {
            return {
                dzUuid: chunk.file.upload.uuid,
                dzChunkIndex: chunk.index,
                dzTotalFileSize: chunk.file.size,
                dzCurrentChunkSize: chunk.dataBlock.data.size,
                dzTotalChunkCount: chunk.file.upload.totalChunkCount,
                dzChunkByteOffset: chunk.index * this.options.chunkSize,
                dzChunkSize: this.options.chunkSize,
                dzFilename: chunk.file.name,
            };
        }
    },
    init: function () {
        var submitButton = document.querySelector("#submit");
        var resetButton = document.querySelector("#reset");
        var token = $('input[name="__RequestVerificationToken"]').val();
        var wrapperThis = this;
        submitButton.addEventListener("click", function (e) {
            wrapperThis.processQueue();
            e.preventDefault();
            e.stopPropagation();
            e.stopImmediatePropagation();
            return false;
        });

        this.on('sending', function (data, xhr, formData) {
            formData.append("__RequestVerificationToken",token);
            formData.append("@Html.IdFor(x => x.CategoryId)", $("#@Html.IdFor(x => x.CategoryId)").val());
            formData.append("@Html.IdFor(x => x.RepositoryId)", $("#@Html.IdFor(x => x.RepositoryId)").val());
            formData.append("@Html.IdFor(x => x.BatchId)", $("#@Html.IdFor(x => x.BatchId)").val());
            formData.append("@Html.IdFor(x => x.BatchName)", $("#@Html.IdFor(x => x.BatchName)").val());
        });;

        this.on('error', function (file, message) {
            //toastr.error(message);
            $("#UploadActivity").val($("#UploadActivity").val() + message + "\r\n");
            wrapperThis.disable();
        });

        this.on("chunksUploaded", function (file, done) {
            //merge uploaded chunks
            console.log("AAAAAA");
            console.log(file.upload.uuid);
            this.options.autoProcessQueue = true;
            done();
        });

        this.on("queuecomplete", function () {
            this.options.autoProcessQueue = false;
        })
    }
};

Должен ли я что-то возвращать из моего сохранения C ajax? В настоящее время просто возвращается HTTPResponseMessage

1 Ответ

0 голосов
/ 16 марта 2020

Если посмотреть документацию здесь , вы увидите, что chunksUploaded - это параметр обратного вызова, который должен быть похож на params, а не на событие, подобное sending или error

Dropzone.options.dropzone = {
    url:"@Url.Action("SaveC", "Document", new { area="Document"})",
    autoProcessQueue: false,
    addRemoveLinks: true,
    uploadMultiple: false,
    parallelUploads: 1,
    chunking: true,
    forceChunking: true,
    chunkSize: 100000,
    parallelChunkUploads: true,
    retryChunks: true,
    retryChunksLimit: 3,
    params: function (files, xhr, chunk) {
        if (chunk) {
            return {
                dzUuid: chunk.file.upload.uuid,
                dzChunkIndex: chunk.index,
                dzTotalFileSize: chunk.file.size,
                dzCurrentChunkSize: chunk.dataBlock.data.size,
                dzTotalChunkCount: chunk.file.upload.totalChunkCount,
                dzChunkByteOffset: chunk.index * this.options.chunkSize,
                dzChunkSize: this.options.chunkSize,
                dzFilename: chunk.file.name,
            };
        }
    },
    chunksUploaded: function (file, done) {
        //merge uploaded chunks
        console.log("AAAAAA");
        console.log(file.upload.uuid);
        this.options.autoProcessQueue = true;
        done();
    },
    init: function () {
        var submitButton = document.querySelector("#submit");
        var resetButton = document.querySelector("#reset");
        var token = $('input[name="__RequestVerificationToken"]').val();
        var wrapperThis = this;
        submitButton.addEventListener("click", function (e) {
            wrapperThis.processQueue();
            e.preventDefault();
            e.stopPropagation();
            e.stopImmediatePropagation();
            return false;
        });

        this.on('sending', function (data, xhr, formData) {
            formData.append("__RequestVerificationToken",token);
            formData.append("@Html.IdFor(x => x.CategoryId)", $("#@Html.IdFor(x => x.CategoryId)").val());
            formData.append("@Html.IdFor(x => x.RepositoryId)", $("#@Html.IdFor(x => x.RepositoryId)").val());
            formData.append("@Html.IdFor(x => x.BatchId)", $("#@Html.IdFor(x => x.BatchId)").val());
            formData.append("@Html.IdFor(x => x.BatchName)", $("#@Html.IdFor(x => x.BatchName)").val());
        });;

        this.on('error', function (file, message) {
            //toastr.error(message);
            $("#UploadActivity").val($("#UploadActivity").val() + message + "\r\n");
            wrapperThis.disable();
        });

        this.on("queuecomplete", function () {
            this.options.autoProcessQueue = false;
        })
    }
};
...