file upload - logs - Carga de mĂșltiples archivos con Sails.js 0.10 y Skipper usando Dropzone.js
sails js s3 (3)
Con Dropzone y Sails.js, tienes que:
- agregue la definición del nombre de archivo en la configuración de Dropzone:
Dropzone.options.myDropzone = {paramName: "fileName"}
- use este comando para recuperar el archivo cargado:
req.file (''fileName''). upload (función (err, uploadFile) {
});
uploadedFiles contiene el archivo
Tengo un problema con la carga de varios archivos en mi aplicación de velas. Estoy intentando implementar la carga de múltiples archivos con Dropzone.js y mi backend es Sails v0.10.0-rc8.
Ahora, cuando cargo algunos archivos a través de dropzone, veo que en caso de carga múltiple envía los archivos con parámetros separados en la solicitud. Los nombres de param son ''photo[0]'', ''photo[1]'', ''photo[2]'',...
Estoy recibiendo los archivos en el controlador de esta manera:
req.file(file).upload(function (err, files) {
// save the file
});
Pero cuando hay más de un archivo enviado, la solicitud se pasa al controlador antes de que todos los archivos se analicen y almacenen desde la solicitud, por lo que solo obtengo un archivo en mi controlador.
¿Alguien ha experimentado este problema? ¿Tal vez no hay soporte para la carga de archivos múltiples con diferentes parámetros de solicitud en el analizador del cuerpo del patrón? Porque cuando envío varios archivos dentro de un atributo (''foto''), todos ellos se manejan y pasan al controlador.
Esto debería funcionar, siempre que recorra los nombres de parámetros de forma asíncrona, por ejemplo:
async.map(paramNames, function(file, cb) {
req.file(file).upload(function (err, files) {
// save the file, and then:
return cb(err, files);
});
}, function doneUploading(err, files) {
// If any errors occurred, show server error
if (err) {return res.serverError(err);}
// Otherwise list files that were uploaded
return res.json(files);
});
Pude probar esto con éxito.
Esto parece funcionar bien para mí:
Dropzone.options.fotagDropzone = {
init: function() {
this.on("success", function(file, responseText) {
// Handle the responseText here. For example, add the text to the preview element:
console.log(responseText.files[0]);
file.previewTemplate.appendChild(document.createTextNode(responseText.files[0].fd));
});
},
paramName: "file", // The name that will be used to transfer the file
maxFilesize: 10, // MB
uploadMultiple: false,
addRemoveLinks: true,
parallelUploads: true,
dictDefaultMessage: ''Drag files here <br />or<br /><button class="dzUploadBtn" type="button">click here to upload</button>'',
acceptedMimeTypes: ''.jpg''
};
Básicamente, no envía todos los archivos juntos, pero aún puede colocar varios archivos en la zona de soltar. El back-end es tu carga estándar usando skipper.