jQuery MiniUI

标题: mini.FileUpload 浏览器“兼容”问题!!! [打印本页]

作者: 天狼    时间: 2013-5-5 22:39:35     标题: mini.FileUpload 浏览器“兼容”问题!!!

本帖最后由 天狼 于 2013-5-5 22:41 编辑

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

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

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

在IE9下上传进度正常显示,如图:
[attach]1795[/attach]

在firefox20.0.1下就不显示上传进度了,如图:
[attach]1796[/attach]

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

我们都知道,解决swfupload在firefox下有bug的办法是向后台传递jsessionid,在java中即:jsessionid=<%=session.getId() %>,
但是现在用的贵司的mini.FileUpload控件,查询了其API,如图:
[attach]1797[/attach]
没有发现有可以干预swfupload的API!
已经尝试过:uploadUrl="userimportUser.action;jsessionid=<%=session.getId() %>",还是不行!!
所以怀疑mini.FileUpload 有“兼容”问题。
望官方给出正解!


作者: factory    时间: 2013-5-6 09:11:24

mini.FileUpload只是简单的封装了下SWFUPLOAD,解决了一些最最简单和基础的上传的需求。

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

这个试试
作者: 天狼    时间: 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]


作者: factory    时间: 2013-5-6 18:34:20

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

如果还不行的话,建议你直接使用swfupload吧
作者: 小宇宙    时间: 2017-10-25 10:18:14

遇到了一样的问题fileupload.setPostParams is not a function

作者: felt    时间: 2017-10-25 11:13:53

小宇宙 发表于 2017-10-25 10:18
遇到了一样的问题fileupload.setPostParams is not a function

你是不是写错了,是setPostParam
本地测试了setPostParam是可以使用的
你那边的版本是不是太低了。
作者: 小宇宙    时间: 2017-10-27 09:27:21

felt 发表于 2017-10-25 11:13
你是不是写错了,是setPostParam
本地测试了setPostParam是可以使用的
你那边的版本是不是太低了。 ...

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




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2