向Uploadifive / Uploadify添加输入字段

时间:2013-09-27 03:26:28

标签: php jquery uploadify

我一直在搜索并搜索如何添加输入字段的答案,并将额外的变量传递给uploadifive.php文件。但是,我无法获得任何已发布的解决方案,大多数情况下,我找到的解决方案从未被列为工作或解决方案。

有人可以告诉我如何获取传递给uploadifive.php文件的输入字段的内容吗?

这是我的HTML

<input type="text" name="student" id="student" placeholder="Your Student ID" value="" />
<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>

这是javascript

<?php $timestamp = time();?>
    $(function() {
        $('#file_upload').uploadifive({
            'auto'     : false,
            'method'   : 'post',
            'formData' : {
                'timestamp' : '<?php echo $timestamp;?>',
                'token'     : '<?php echo md5('unique_salt' . $timestamp);?>',
                'student'   : $('#student').val()
                      },
                'queueID'          : 'queue',
                'uploadScript'     : 'uploadifive.php',
                'onUploadComplete' : function(file, data) { console.log(data); }
            });
        });

以下是我在php文件中尝试使用它的方法,但没有传递值

$_POST['student']

如果有人能告诉我我做错了什么我们如何让它发挥作用我真的很感激。

谢谢, 加里

5 个答案:

答案 0 :(得分:2)

我们需要阅读的输入仍然是

<input type="text" name="student" id="student" placeholder="Your Student ID" value="" />

使用此js作为指南(我只包括对该示例重要的选项):

$('#my_file').uploadifive ({
    'formData': {
        //Some data we already know
        'timestamp' : "1400137111",
        'token'     : "a9b7ba70783b617e9998dc4dd82eb3c5"
     },

     //This will be executed before the upload process starts, so here's where
     //you will get the values in your form and will add them to formData.
     'onUpload': function(filesToUpload) {
         //Most of jQuery plugins, and luckily this one, uses the function jQuery.data
         //to save the settings we use on plugin's initialization.
         //In this case we can find those settings like this:
         var settings = $(this).data('uploadifive').settings;

         //Now we need to edit formData and add our input's value
         settings.formData.student = $('#student').val();

         //formData has the value readed from the input, so we store 
         //it again using jQuery.data
         $(this).data('uploadifive').settings = settings;

         //After this the plugin will perform the upload, reading the settings with
         //jQuery.data and our input's value will be present
     },

});

答案 1 :(得分:1)

您的代码无法正常运行,因为 #student 输入字段的值会在页面加载时传递给uploadify formData 。在那一刻,该字段的值为空,因此您在PHP脚本中获得空值。

您需要做的是在上传开始时准确读取字段的值。为此,您必须实现uploadify对象的 onUploadStart 方法。

查看the documentation了解详情。您还将找到一个动态设置formData的示例。

答案 2 :(得分:0)

$('#file_upload') is undefined at the moment when you call the function 

你应该考虑使用document.ready以便加载所有dom元素并使用jquery引用

javascript:$('#file_upload').uploadifive('upload') of code is also unnecessary 

请阅读文档,并在[demo] [1]中看到他们定义了uploadifive的演示

[1]:http://www.uploadify.com/demos/在dom的最后,这就是为什么他们没有使用document.ready

答案 3 :(得分:0)

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

答案 4 :(得分:0)

忘记尝试在初始化中添加任何内容,例如onUpload。不行。如果您访问Uploadifive论坛,您会发现作者的几个不一致的答案,这些答案似乎包含语法错误,但也不起作用。

从初始化中完全删除formData,并将其移动到使用上传链接调用的单独函数。 您可以在this post

找到详细说明