Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uploadifive dynamically posting input variables

The problem below is that when the function is initiated, of course, MyInputVariable is empty.

<?php $timestamp = time();?>
$(function () {
    $('#file_upload').uploadifive({
        'auto': false,
        'dnd': true,
        'checkScript': 'check-exists.php',
        'formData': {
            'timestamp': '<?php echo $timestamp;?>',
            'token': '<?php echo md5('unique_salt' . $timestamp);?>',
            'MyNumber': $('#MyInputVariable').val(),
        },
        'queueID': 'queue',
        'uploadScript': 'upload.php',
        'onUploadComplete': function(file, data) {console.log(data);}
    });
});

There must be a way to instigate onUpload, onUploadComplete, onUploadFile or something to update formData, but I am at a loss as to how to do that.


Please note that this is uploadiFIVE, not uploadify. The functions/methods differ significantly, and solutions will probably not apply to both.

like image 765
RationalRabbit Avatar asked Dec 12 '22 07:12

RationalRabbit


2 Answers

After many hours of experimentation with misleading solutions on the uplodifive forum, this is the solution.

In your HTML anchor tag:

<input id="file_upload" name="file_upload" type="file" multiple="true">
<a style="position: relative; top: 8px;" href="javascript:$('#file_upload').uploadifive('upload')">Upload Files</a>

Change the anchor tag to:

<a style="position: relative; top: 8px;" href="javascript:uploadFiles();">Upload Files</a>

Completely eliminate the formData setting from the initial function call so it then looks something like this:

$(function()
{
    $('#file_upload').uploadifive(
    {
        'auto'               : false,
        'dnd'                : true,
        'checkScript'        : 'check-exists.php',
        'queueID'            : 'queue',
        'uploadScript'       : 'upload.php',
        'onUploadComplete'   : function(file, data) {console.log(data);}
    });
});

Than add this function:

   function uploadFiles()
   {
      $('#file_upload').data('uploadifive').settings.formData =
      {
         'timestamp' : '<?php echo $timestamp;?>',
         'token'     : '<?php echo md5('unique_salt' . $timestamp);?>',
         'MyNumber'  : $('#MyInputVariable').val()
      },
      $('#file_upload').uploadifive('upload');
   }

And whatever other variables you need to add. Your input variables will now post on upload.

like image 111
RationalRabbit Avatar answered Jan 07 '23 19:01

RationalRabbit


I think this is best anwser

How to submit dynamic variables with uploadifive

replace this:

'formData': {
        'timestamp': '<?php echo $timestamp;?>',
        'token': '<?php echo md5('unique_salt' . $timestamp);?>',
        'MyNumber': $('#MyInputVariable').val(),
    },

by this:

'onUpload' : function(){
$('#file_upload').data('uploadifive').settings.formData = {
        'timestamp': '<?php echo $timestamp;?>',
        'token': '<?php echo md5('unique_salt' . $timestamp);?>',
        'MyNumber': $('#MyInputVariable').val(),
}},

and this is full code:

<?php $timestamp = time();?>
$(function () {
    $('#file_upload').uploadifive({
        'auto': false,
        'dnd': true,
        'checkScript': 'check-exists.php',
        'onUpload' : function(){
                $('#file_upload').data('uploadifive').settings.formData = {
                        'timestamp': '<?php echo $timestamp;?>',
                        'token': '<?php echo md5('unique_salt' . $timestamp);?>',
                        'MyNumber': $('#MyInputVariable').val(),
                            }},
        'queueID': 'queue',
        'uploadScript': 'upload.php',
        'onUploadComplete': function(file, data) {console.log(data);}
    });
});
like image 33
Hoàng Vũ Tgtt Avatar answered Jan 07 '23 19:01

Hoàng Vũ Tgtt