jQuery MiniUI

 找回密码
 立即注册
查看: 5327|回复: 6
打印 上一主题 下一主题

mini.FileUpload 浏览器“兼容”问题!!! [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2013-5-5 22:39:35 |只看该作者 |倒序浏览
本帖最后由 天狼 于 2013-5-5 22:41 编辑

我的项目是struts2+spring3+hibernate4,其中需要用到基于flash实现的文件上传控件mini.FileUpload,要求要显示上传进度,经过查阅,miniui中貌似没有进度条控件,故自己实现进度条了。

实现思路:
后台使用org.apache.commons.fileupload.ProgressListener监听上传进度,然后把进度值存入HttpSession;
前台不断发送ajax请求取HttpSesion中存储的进度值。

前台使用了基于flash实现的文件上传控件mini.FileUpload。

在IE9下上传进度正常显示,如图:


在firefox20.0.1下就不显示上传进度了,如图:


经过查阅资料,swfupload在firefox下有bug,swfupload.swf不会把当前页面的cookie发送给后台。上文提到,后台是通过HttpSession存储或获取进度值,那么“session+进度条”的方案就失败了。

我们都知道,解决swfupload在firefox下有bug的办法是向后台传递jsessionid,在java中即:jsessionid=<%=session.getId() %>,
但是现在用的贵司的mini.FileUpload控件,查询了其API,如图:

没有发现有可以干预swfupload的API!
已经尝试过:uploadUrl="userimportUser.action;jsessionid=<%=session.getId() %>",还是不行!!
所以怀疑mini.FileUpload 有“兼容”问题。
望官方给出正解!

附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

沙发
发表于 2013-5-6 09:11:24 |只看该作者
mini.FileUpload只是简单的封装了下SWFUPLOAD,解决了一些最最简单和基础的上传的需求。

你用setPostParam ( Object )                设置post参数对象。如:fileupload.setPostParam({a:1, b: true});

这个试试

Rank: 3Rank: 3

板凳
发表于 2013-5-6 18:32:05 |只看该作者
factory 发表于 2013-5-6 09:11
mini.FileUpload只是简单的封装了下SWFUPLOAD,解决了一些最最简单和基础的上传的需求。

你用setPostParam  ...

亲,还是不行啊!
setPostParam({})大概是swfupload的吧!
在使用mini-fileupload时,怎么能拿到swfupload对象呢?
所以没法setPostParam({})了,如果强设mini-fileupload对象的setPostParam({})报错啊!

HTML:
                                 <input id="file" name="file"
                                        class="mini-fileupload"
                                        limitType="*.zip"
                                        flashUrl="swfupload/swfupload.swf"
                                        uploadUrl="user/batchImportUser.action"
                                       
                                        style="width: 250px;"
                                     />
JS:
                var fileupload = mini.get("file");
                fileupload.setPostParam({jsessionid:'<%=session.getId() %>'});
                fileupload.startUpload();

FIREBUG:
TypeError: fileupload.setPostParam is not a function
[url=]fileupload.setPostParam({jsessionid:'0FB696EB4B2DC5A3432BEB46DB8976CC'});[/url]

Rank: 8Rank: 8

地板
发表于 2013-5-6 18:34:20 |只看该作者
天狼 发表于 2013-5-6 18:32
亲,还是不行啊!
setPostParam({})大概是swfupload的吧!
在使用mini-fileupload时,怎么能拿到swfuploa ...

如果还不行的话,建议你直接使用swfupload吧

Rank: 2

5#
发表于 2017-10-25 10:18:14 |只看该作者
遇到了一样的问题fileupload.setPostParams is not a function

Rank: 8Rank: 8

6#
发表于 2017-10-25 11:13:53 |只看该作者
小宇宙 发表于 2017-10-25 10:18
遇到了一样的问题fileupload.setPostParams is not a function

你是不是写错了,是setPostParam
本地测试了setPostParam是可以使用的
你那边的版本是不是太低了。

Rank: 2

7#
发表于 2017-10-27 09:27:21 |只看该作者
felt 发表于 2017-10-25 11:13
你是不是写错了,是setPostParam
本地测试了setPostParam是可以使用的
你那边的版本是不是太低了。 ...

哦哦,确实是写错了,setPostParams调到了别的js包里了,多谢!!

Archiver|普加软件

GMT+8, 2024-11-22 22:07 , Processed in 1.048406 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部