jquery.uploadify动态传递表单元素

在给网站开发的时候,璞玉需要用到uploadify这个上传插件,在使用的时候,遇到一个问题就是通过前端的上传脚本,把一个动态的数据传递到上传后台处理页面做一个参数。

看了手册之后发现有一个接口,可以使用。那就是’scriptData’,(这个是在Uploadify3.0的版本下才有,3.0以上改为formData).

在使用uploadify时,如果使用初始化参数的方式传递参数,会发现修改过的表单元素传不到后台。

'scriptData'    : {'ttype':document.getElementById('name').value},

仔细分析了一下,这里传递的参数是表单初始化的时候值,所以一定是空的,或者是默认的。

解决方法是在提交表单时,加上这么一句代码:

<a href="javascript:$('#uploadify').uploadifySettings('scriptData',{'ttype':document.getElementById('name').value}); jQuery('#uploadify').uploadifyUpload()">开始上传</a>


注意书写格式,不然会出错的。

如果对uploadify 参数不是很了解的话,可以参考之前写的那篇《Uploadify与php使用详解》 ,里面每个参数都有注解。希望对大家有帮助!有问题可以直接留言。

uploadify 参数列表(已翻译)

uploadify3.1 PHP+formData动态传值 Dome下载

  1. 最近开发用到了Uploadfy,在一个页面加载一个的时候还好,现在有需求是要在一个页面添加多个附件上传组件,因为我是用jquery在Uploadfy外面封装了一层,而且具体放几个附件上传组件又是动态添加的。。现在弄的头昏脑胀。不知道博主是否有过此类经验,能否给点意见?

  2. 我的是用Java写的后台,执行onComplete一直没有反应 ? 这是为什么 ?’script’ 应该是这个里面服务端代码返回一个值的。。。。。貌似没有效应

  3. 不知道你的代码是在3.X的哪个版本,我在3.2下里这样写是不行的,需要改成:
    $(“#file_upload”).uploadify(‘settings’, ‘formData’, { key : value } );
    $(“#file_upload”).uploadify(‘upload’);
    在3.2的版本中好像已经没有scriptData这样的对象了

  4. 我也是这样传参数的,假如我的ttype的值是中文,到服务器端就会变成u6821u51C6u7535u6D41这样,如果你有遇到过,请发邮件告诉我解决方法,谢谢

  5. 博主您好,首先非常感谢您这篇文章的无私奉献! 最近在开发时用到了uploadify,大致需求是这样的,前台用户选择文件类型,如:图片、文档或rar,请问这个类型参数如何传递,传递到哪里做判断比较好及如何判断,请博主给予思路(最好有解法). 拜谢。

    • 这个问题,你可以这样做,你在前台给用户设计几个按钮,分别是你说的那些类型,然后通过点击这个按钮传递类型到 这两个选项下:
      ‘fileDesc’: ‘*.jpg;*.jpeg;*.gif;*.png;’,
      ‘fileExt’: ‘*.jpg;*.jpeg;*.gif;*.png;’,

      然后用户选择文件的时候就是只能是之前选定的类型。

  6. java环境中,在3.2下传参除了指定formData外,uploader里的页面后面还要带参数如:
    $(function() {
    $(“#file_upload”).uploadify({
    ‘formData’ : {‘someKey’ : ‘1’, ‘someOtherKey’ : 1},
    ‘swf’ : ‘/uploadify/uploadify.swf’,
    ‘uploader’ : ‘/uploadify/uploadify.jsp?someKey=1&someOtherKey=2’,
    ‘onUploadStart’ : function(file) {
    $(“#file_upload”).uploadify(“settings”, “someOtherKey”, 2);
    }
    });
    });
    这样后台才能取得到someOtherKey的值

  7. 哥们,找了很多资料,发现你是用这个插件全网最牛的了,我把身家性命都压到你这里了。就一个问题,因为我需要将上传文件的文件扩展名和文件大小的数据插入到数据库,请问怎么从前端获取者两个数据:’script’: ‘${ctx}/system/FileInfo/uploadFile.do?filesize=fileObj.size’这样从后台取到的filesize值就是“fileObj.size”字符串,而不是我想要的文件大小的值数据

    • 我不知道java是怎么写的。
      但是我知道php是这样写的:
      获取文件扩展名,直接在$_FILES 函数里面的键值为type的值就是类型。
      获取文件大小,里面也有对应的键值就是size。

      好好查下资料吧。
      原理都是一样的,文件传到后端之后,去获取你要的值,而不是直接在前端获取。

  8. 按照你那个例子,我判断一个表单中的文本框不能为空,但是,运行后,提示文本框不能为空,但是程序还是上传,请问,如何解决?

  9. 那个问题,我解决了!但是还有个问题,就是uploadify的这个文件里,如何把传过来的值,插入到数据库中呢?现在前端发过来的所有的值 ,后端都取到了,sql语句也写对了,但是上传成功后,数据库里面却没有值,请问如何解决!多谢!

  10. 还有就是,如何返回到另外一个页面,而不是上传页面呢?

    $path = “uploads/”;

    if (!empty($_FILES)) {

    //得到上传的临时文件流
    $tempFile = $_FILES[‘Filedata’][‘tmp_name’];

    //允许的文件后缀
    $fileTypes = array(‘jpg’,’jpeg’,’gif’,’png’);

    //得到文件原名
    $fileName = iconv(“UTF-8″,”GB2312”,$_FILES[“Filedata”][“name”]);
    $fileParts = pathinfo($_FILES[‘Filedata’][‘name’]);

    //接受动态传值
    $files=$_POST[‘typeCode’];

    //最后保存服务器地址
    if(!is_dir($path))
    mkdir($path);
    if (move_uploaded_file($tempFile, $path.$fileName)){
    echo $fileName.”上传成功!”;
    }else{
    echo $fileName.”上传失败!”;
    }

    就是长传成功后,如何把页面跳转到另外一个页面,我是这么做的//echo “”; 但是没效果啊!

  11. 博主你好,我用formData想获取一个id为aid的select,我这样写:
    ‘formData’ : {‘aid’:$(‘#aid’).val()}可是后台获取的永远是select的第一个值,似乎没有传递过去,我改成用name的 $(‘select[name=aid] option:selected’).val()也不行,然后我做了一个button触发alert($(‘#aid’).val())发现是取值是正确的,不知道是不是Uploadify的原因?

  12. 博主你好,我在用这个控件的时候 ,之前好好的,现在出现了一个问题就是,当我上传多文件时,后台永远获取的是最后一个文件。但是文件的数目后台能正确得到,这是什么原因

  13. 如果文件是自动上传的,我要用’scriptData’动态传参,那么
    <ahref="javascript:$('#uploadify').uploadifySettings('scriptData',{'ttype':document.getElementById

    要怎么改啊,看到麻烦回复一下,万分感谢!

  14. 博主你好,我现在想实现用服务器控件提交上传请问能实现吗,因为页面本身全是用的服务器控件,采用这个作为上传的控件,但又要同时处理,请问有什么办法吗

  15. 博主好:
    这个插件对于新手的我来讲太深奥了,希望博主不吝赐教,多谢!我现在 的问题是’uploader’ : ‘http://att.wansecheng.com/album-ott/report’,要传递给后台处理的时候,接收不到任何信息,感觉这个链接压根没有触发,report里面就是uploadify.php的内容

  16. 楼主,请教个问题,后台处理完上传数据后,有没有方法将后台的相关数据再传回到
    onqueueComplete里的跳转参数里?
    例如:
    ‘onQueueComplete’ : function(queueData) {
    window.location = siteUrl+”index.php?app=photo&ac=upload&ts=info&photoid={$photoid}&addtime={$addtime}”;
    中的$photoid

  17. 我遇到一个难题,文件上传没有问题,传入额外参数也没有问题,其中有个参数是select要选择的,点击上传时要判断这个值是否为0,我在onUploadStart里面判断这个值=0会弹出错误提示,但图片还是传上去了。
    我需要的是,在点击上传时,如果这个值为0就弹出提示并且不执行上传动作,请问我应该怎么定义?

    • 你自己的逻辑也很清楚呢!

      在点击上传时,如果这个值为0就弹出提示并且不执行上传动作

      你考虑一下,你点击上传之后,触发的是什么事件?,然后再这个事件里面用JQ获取Select的值,判断后相对应的处理即可!

  18. 博主,我这里有个奇怪的需求,控件初始化之后怎么修改这个formData的值呢?比如我在一个页面是新增记录,记录中有照片,这时候主记录的ID是0,我新增提交之后,页面不跳转,id改变了,怎么修改这个uploadify中的formData的参数?

Leave a Reply to whj Cancel Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

请选择吧!