Envía datos personalizados con dropzone.js en cada Carga de archivos


Estoy usando dropzone en mi Proyecto de Iniciador de Código.

Con cada arrastre de un archivo, dropzone crea una solicitud ajax y mis archivos también se almacenan en el servidor. Pero ahora, mi requisito es que quiero enviar datos adicionales (DINÁMICO ) junto con el archivo. Con el uso de parámetros, Solo se pueden enviar datos estáticos, pero los datos que quiero enviar cambiarán cada vez.

Así es como se ve mi código:

<script>
 Dropzone.autoDiscover = false;
  Dropzone.options.attachment = {
        init: function(){
          this.on('removedfile',function(file){
            // console.log('akjsdhaksj');
            var fileName = file.name;
            $.ajax({
              type: 'POST',
              url: "<?php echo BASE_URL.'index.php/admin/mail_actions/deleteFile' ?>",
              data: "id="+fileName,
              dataType: 'html'
            });
          });
        },
        // params: {
        // customerFolder: $('#toValue').substr(0, toValue.indexOf('@')),
        // },
        dictDefaultMessage:"Click / Drop here to upload files",
        addRemoveLinks: true,
        dictRemoveFile:"Remove",
        maxFiles:3,
        maxFilesize:8,
  }

$(function(){

  var uploadFilePath = "<?php echo BASE_URL.'index.php/admin/mail_actions/uploadFile' ?>";
  var myDropzone     = new Dropzone("div#attachment", { url: uploadFilePath});

});
</script>

De todos modos puedo lograrlo?

Author: Abhinav, 2015-03-16

3 answers

Lo tengo. Esto es lo que tenía que usar

myDropzone.on('sending', function(file, xhr, formData){
            formData.append('userName', 'bob');
        });
 109
Author: Abhinav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-16 10:04:45

Abhinav tiene la respuesta correcta y funcional Solo quiero dar una segunda opción para usarla en el objeto options (por ejemplo, si tiene varias secciones Dropzone en una página.)

myDropzone.options.dropzoneDivID = {
    sending: function(file, xhr, formData){
        formData.append('userName', 'Bob');
    }
};
 17
Author: Stan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-20 13:26:41

En caso de que tenga un objeto de carga anidada, por ejemplo, para agregar un nombre a su archivo y su api solo acepta algo como esto

{
    someParameter: {
        image: <my-upload-file>,
        name: 'Bob'
    }
}

Su configuración de dropzone se vería así

var myDropzone     = new Dropzone("div#attachment", { 
    url: uploadFilePath,
    paramName: 'someParameter[image]'
});

myDropzone.on('sending', function(file, xhr, formData){
    formData.append('someParameter[image]', file);
    formData.append('someParameter[userName]', 'bob');
});

Solo agregué esto ya que no había ningún ejemplo de parámetros anidados documentados desde ahora.

 5
Author: Achim Koellner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-26 09:21:02