5
respostas

Componente Dropzone - Recarregar dados

Bom dia a todos!! Não sei se este forum pode me ajudar nesta questão: Estou tentando trabalhar com o componente Dropzone para Upload de Arquivos, já consigo salvar meus arquivos na base de dados. O problema que está acontecendo é para recarregar os arquivos existentes na base de dados, assim que carrego minha página. Esbarro com o seguinte erro:

dropzone.min.js:1 Uncaught Error: Dropzone already attached

Quando salvo as imagens no b.d., instancio o componente Dropzone, assim:

let myDropzone = new Dropzone("#idDropzone-" + relacionamentoId, { ... }

E para resgatar as imagens existentes na base de dados, estou instanciando novamente, como mostrado acima, sendo que ocorre o erro mencionado. Existe uma forma de pegar o id do Dropzone sem precisar instanciá-lo, já que o mesmo já foi instanciado.

Tentei desta forma, sendo meu id é concatenado, como mostrado na definição da variável.

Dropzone.options.idDropzone { }

Definição do id do Dropzone:

Não sei se consegui ser clara.

Obrigada, Flávia

5 respostas

Olá Flávia, eu não entendi muito bem o que você está tentando fazer, por favor você pode me explicar um pouco mais sobre?

Conversando com um amigo meu o Erykeepo, ele me disse o seguinte:

"O Problema aí é que o Dropzone já esta montado em tela. pra ela instanciar o Dropzone novamente ela pode usar um método nativo dele pra "Destruir" ele primeiro e depois remonta-lo"

Flávia vê se existe o método Destroy no Dropzone e usa ele toda vez que for carregar a página, se existir é algo assim:

Dropzone.destroy();

Testando pelo site do Dropzone, parece que não tem o método destroy então tenta zerar o valor da variável que você usou como ponteiro para objeto Dropzone, dessa forma será destruído o objeto Dropzone.

Se não funcionar, avisa nós ae!

Oi Marco.

Vou testar aqui e aviso.

Muito Obrigada.

Bom dia Marco.

Tentei da seguinte forma, antes de instanciar pela segunda vez:

$(document).on("click", ".collapse-upload", function () { let relacionamentoId = $(this).data("relacionamentoid");

        if (Dropzone.instances.length > 0) {
            Dropzone.instances.forEach((e) => {
                e.off();
                e.destroy();
            });
        }

        let myDropzone = new Dropzone("#dzUpload-" + relacionamentoId, {

            dataType: 'json',
            type: 'GET',
            url: '/UploadEvidencia/ListaEvidencias',
            params: { relacionamentoId: relacionamentoId },
            init: function () {

Ele destroy , mas quando entra na variável mydropzone vai direto para o final da função. E continua ocorrendo o erro: Uncaught Error: Dropzone already attached.

Obrigada. Flavia

Bom dia Marco.

Agradeço muito pela ajuda, mas da forma que explicou o Dropzone trabalha sempre com uma única instancia o que não atende para meu caso, pois preciso ter vários dropzones em uma página e cada um pode conter vários arquivos. Estou pesquisando uma nova biblioteca que atenda a este caso específico, se souber de alguma e puder me indicar, ok?

Muito Obrigada.

Flávia