javascript - Dropzone subir solo un archivo
php dropzone.js (5)
Estoy usando dropzone.js para mi solución de carga de archivos con arrastrar y soltar. Quiero cargar solo un archivo, si subo el segundo archivo, el primero debería eliminarse y el segundo debería cargarse. alguna idea de cómo hacerlo ...
aqui esta mi html
<form class="dropzone dz-clickable" action="upload.php" enctype=''multipart/form-data''>
<i class="fa fa-cloud-upload element"></i>
<div style="color:gray;">Drag and drop or click to upload image</div>
<input type="hidden" name="filenameEmail" class="filenameEmail" value="">
<input type="hidden" name="side" value="front">
</form>
cambié dropzone.js
maxFiles: 1
permite cargar solo un archivo, pero no puedo eliminar el archivo cargado anteriormente. Por favor, ayúdame. Gracias de antemano.
La limitación de maxFiles
a 1 aún permite seleccionar varios archivos en el cuadro de diálogo de carga. Para rechazar la selección de varias imágenes en la configuración, especifique la siguiente función init:
maxFiles:1,
init: function() {
this.hiddenFileInput.removeAttribute(''multiple'');
}
Ninguna de estas soluciones funcionó para mí.
El evento maxfilesexceeded
se llama demasiado tarde, es decir, después de un intento de agregar el archivo.
Otras soluciones que utilizan this.removeFile(this.files[0]);
dio como resultado un "Uncaught TypeError: Cannot read property ''removeChild'' of null".
o un bucle infinito.
Resuelto por -
maxFiles: 2,
init: function () {
this.on("addedfile", function (file) {
if (this.files.length > 1) {
this.files = this.files.slice(1, 2);
}
});
}
Funciona cuando se usa dz-clickable
(seleccionador de archivos btn) y arrastrar y soltar.
Utilicé el evento maxfilesexceeded
con el método addFile
y las rans en un bucle infinito de llamada de evento. Debería ser el problema de usar addFile
porque no lo vi mencionado en el sitio oficial o en la wiki de GitHub. Finalmente lo resolví con el evento de addedfile
. Dropzone.js es la última versión cuando escribo (4.3.0).
init: function() {
this.on(''addedfile'', function(file) {
if (this.files.length > 1) {
this.removeFile(this.files[0]);
}
});
}
maxFiles: 1 se utiliza para indicar a Dropzone que solo debe haber un archivo. Cuando haya más de 1 archivo, se maxfilesexceeded la función maxfilesexceeded , con el archivo excedente como primer parámetro.
Aquí hay una función simple para eliminar la vista previa del primer archivo y agregar el nuevo :)
maxFiles:1,
init: function() {
this.on("maxfilesexceeded", function(file) {
this.removeAllFiles();
this.addFile(file);
});
}
Dropzone.prototype.defaultOptions.init = function () {
this.hiddenFileInput.removeAttribute(''multiple'');
this.on("maxfilesexceeded", function (file) {
this.removeAllFiles();
this.addFile(file);
});
};
Esto es un trabajo para mí.