Implementada funcionalidad descarga en zip

This commit is contained in:
Ignacio Martinez Navajas
2025-05-22 22:10:14 +02:00
parent b084d1bd7c
commit e3c202ae64
8 changed files with 188 additions and 19 deletions

View File

@ -30,6 +30,7 @@ class FileUploadDropzone {
this.modelId = this.jqElement.data('id')
this.btnSelectFiles = $(`#${domElement.replace('#', '')}_btnUploadFiles`)
this.btnSubmitFile = $(`#${domElement.replace('#', '')}_btnSubmitFiles`)
this.btnDownloadFiles = $(`#${domElement.replace('#', '')}_btnDownloadFiles`);
this.dataPost = {}
this.nameId = nameId;
this.getUri = getUri
@ -44,6 +45,7 @@ class FileUploadDropzone {
this.btnSelectFiles.on('click', () => {
this.jqElement.trigger('click')
})
this.btnDownloadFiles.on('click', this._handleDownloadFiles.bind(this))
this.dropzone = new Dropzone(this.domElement, {
url: this.postUri,
@ -67,12 +69,12 @@ class FileUploadDropzone {
var viewButton = Dropzone.createElement("<span class='dz-remove'>Ver</span>");
file.previewElement.appendChild(viewButton);
// Listen to the view button click event
viewButton.addEventListener("click", this.onViewButton.bind(this,file));
viewButton.addEventListener("click", this.onViewButton.bind(this, file));
}
}
onViewButton(file) {
console.log(window.location.protocol + "//" + window.location.host + "/sistema/intranet/" + this.resourcePath + "/" + file.hash)
window.open(window.location.protocol + "//" + window.location.host + "/sistema/intranet/" + this.resourcePath + "/" + file.hash, '_blank');
window.open(window.location.protocol + "//" + window.location.host + "/sistema/intranet/" + this.resourcePath + "/" + file.hash, '_blank');
}
_getDropzoneFilesFormData() {
var files = this.dropzone.files;
@ -134,6 +136,47 @@ class FileUploadDropzone {
}
}
_handleDownloadFiles() {
$("#loader").modal('show');
$.ajax({
url: `/presupuestoadmin/download_zip`,
type: 'POST',
data: {
[this.nameId]: this.modelId
},
xhrFields: {
responseType: 'blob'
},
success: (blob, status, xhr) => {
const disposition = xhr.getResponseHeader('Content-Disposition');
let filename = "archivos.zip";
if (disposition && disposition.indexOf('attachment') !== -1) {
const match = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(disposition);
if (match != null && match[1]) {
filename = match[1].replace(/['"]/g, '');
}
}
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
a.remove();
window.URL.revokeObjectURL(url);
},
error: () => {
alertWarningMessage("Error al descargar el archivo ZIP.");
},
complete: () => {
$("#loader").modal('hide');
}
});
}
dropZoneUpdateFiles(files) {
files.forEach(file => {