Uploadifive动态发布输入变量

Rat*_*bit 4 jquery post file-upload input uploadifive

下面的问题是,当启动该功能时,当然MyInputVariable是空的.

<?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);}
    });
});
Run Code Online (Sandbox Code Playgroud)

必须有煽动的方式onUpload,onUploadComplete,onUploadFile什么更新formData,但我在一个不知如何做到这一点.


请注意,这是uploadiFIVE,而不是uploadify.功能/方法差别很大,解决方案可能不适用于两者.

Rat*_*bit 7

在uplodifive论坛上经过数小时的误导性解决方案实验后,这就是解决方案.

在您的HTML锚标记中:

<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>
Run Code Online (Sandbox Code Playgroud)

将锚标记更改为:

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

从初始函数调用中完全消除formData设置,使其看起来像这样:

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

比添加这个功能:

   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');
   }
Run Code Online (Sandbox Code Playgroud)

无论你需要添加什么其他变量.您的输入变量现在将在上传时发布.


Hoà*_*gtt 5

我认为这是最好的 anwser

如何使用uploadive提交动态变量

替换这个:

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

这样:

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

这是完整的代码:

<?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);}
    });
});
Run Code Online (Sandbox Code Playgroud)