Envoyer des données personnalisées avec dropzone.js sur chaque Téléchargement de Fichier

j'utilise dropzone dans mon projet D'allumage de Code.

avec chaque traînée d'un fichier, dropzone crée une requête ajax et mes fichiers sont stockés sur le serveur aussi. Mais maintenant, mon exigence est que je veux envoyer des données supplémentaires ( dynamique) à côté du fichier. Avec l'utilisation de params, seules les données statiques peuvent être envoyées, mais les données que je veux envoyer seront changées à chaque fois.

voici à quoi ressemble mon code:

<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>

Tout ce que je peux accomplir il?

29
demandé sur Abhinav 2015-03-16 12:55:57

3 réponses

je l'ai eu. C'est ce que j'ai eu à utiliser

myDropzone.on('sending', function(file, xhr, formData){
            formData.append('userName', 'bob');
        });
109
répondu Abhinav 2015-03-16 10:04:45

Abhinav a la bonne réponse et je ne veux donner qu'une seconde option pour l'utiliser dans l'objet options (par exemple si vous avez plusieurs sections de Dropzone sur une page.)

myDropzone.options.dropzoneDivID = {
    sending: function(file, xhr, formData){
        formData.append('userName', 'Bob');
    }
};
17
répondu Stan 2016-05-20 13:26:41

dans le cas où vous avez un objet de charge utile imbriqué - par exemple pour ajouter un nom à votre fichier et votre api n'accepte que quelque chose comme ceci

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

votre configuration de dropzone ressemblerait à ceci

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');
});

j'ai seulement ajouté ceci car il n'y avait pas d'exemple pour les paramètres imbriqués documentés depuis maintenant.

5
répondu Achim Koellner 2017-02-26 09:21:02