jspSmartUpload问题,急等啊!谢谢! 用strust,为什么还用这个组件它不是用fileupload组件吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload(); //初始化 mySmartUpload.initialize(pageContext); //设置上载的最大值100M mySmartUpload.setMaxFileSize(100 * 1024*1024); //上载文件 mySmartUpload.upload();这是我写的上传中的某一个文件中的代码,没有错啊,只不过我是jsp的 我是在 Struts的Actin里做的 // 上传初始化时有错 su.initialize(pageContext);??????????????????有错??? 不知道在Action里怎么得到 pageContext????各位大哥,请指教!!! 谢谢了!!! 在action,初始化不是这样的:SmartUpload su = new SmartUpload(); ServletConfig config = servlet.getServletConfig(); su.initialize(config,servletRequest,servletResponse); SmartUpload可以上传大文件吗??????我用它老是溢出.用fileupload组件又太慢.我的程序要求大文件上传. SmartUpload是早期的一个文件上穿组件,在jsp中及servlet中均可以方便的使用:1 jsp中的用法:<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />mySmartUpload.initialize(pageContext);mySmartUpload.setTotalMaxFileSize(10000000);mySmartUpload.upload();2 Servlet中的用法:SmartUpload mySmartUpload = new SmartUpload();mySmartUpload.initialize(config,request,response);mySmartUpload.setTotalMaxFileSize(10000000);mySmartUpload.upload();具体可以参看其标准example至于效率问题,确实SmartUpload有先天不足,相信大家都看过其源码,针对上传的优化非常简单,对大文件的判断及处理有问题,完全是服务器端的内存能力处理。其它备选方案:cos及apache组织的common-upload及基于common-upload之上的struts的upload解决方案。cos方案也是比较经典的老牌upload组件,但是同jspsmartupload一样,存在一定的问题;common-upload组件有两个重要的优点:一是可以方便的实现大文件头预知(即如果上传的文件大于你所设置的最大文件尺寸,例如200m,那末可能在刚上传到1m的时候,已经得知文件头中文件的大小,并判断出非法上传,停止上传动作),这个功能在struts中体现,不过是模块的全局设置参数(个人觉得还可以改进);二是可以实现写disk缓存,即如果上传文件大于全局设置的temp值(如2m),那末上传的文件流会写到默认或指定的temp目录去,而不是纯粹占用服务器的内存(可以设想用jspsmartupload上传一个1G的movie看看,在上传的过程中,服务器的内存消耗直线上升,直到1G,如果有多用户的并发,死机就难以避免了)。 bigdog001兄:fileupload上传怎么这么慢啊???我们在局域网,上传速度才140K啊!!!!有办法更快吗??????????????????如果你解决我的这个问题,送上500分,怎么样???????????? 使用commons-fileupload的基本常识:FileUpload对象的一些参数值—sizeMax、sizeThreshold、repositoryPath:SizeMax 用来设置上传文件大小的最大值,一旦用户上传的文件大小超过该值时将会抛出一个FileUploadException异常,提示文件太大; SizeThreshold 设置内存中缓冲区的大小,一旦文件的大小超过该值的时候,程序会自动将其它数据存放在repositoryPath指定的目录下作为缓冲。合理设置该参数的值可以保证服务器稳定高效的运行; RepositoryPath 指定缓冲区目录。想必这几个参数你肯定不会写错吧?其它原因:1 防病毒软件的问题 在上传过程中,防病毒软件发现服务器上的文件改变,so实时去scan了,导致缓慢;2 网络因素 看看本地上传与远程上传有无区别,有可能是网络设备配置的问题。重点关注方面:个人觉得上传的速度主要取决于SizeThreshold参数,默认是4096,即大概4k;但是这个数值建议更改为256 * 1024,即256k利用commons-fileupload的struts的上传速度快很多,实际上就是在struts的CommonsMultipartRequestHandler文件中默认的SizeThreshold参数提高为256k。 bigdog001兄:我的设置没有问题:DiskFileUpload fu = new DiskFileUpload(); // 设置允许用户上传文件大小,单位:字节 fu.setSizeMax(1000*1024*1024); // 设置最多只允许在内存中存储的数据,单位:字节 fu.setSizeThreshold(1*1024*1024);//1M但是还是很慢,一个50M的文件上传最少要5分钟!就是平均没分钟不到10M.这样的速度客户无法满意.还有没有其他的可能?????需要设置SocketSendBufferLength吗(Winsock 进行通信时的发送缓冲区)??我设置了还是没用;我把杀毒软件全关了.网络是局域网.如果你能帮我解决这个问题,当重谢!!决不食言!!!! bigdog001:SizeMax 设置上传文件大小的最大值,一旦用户上传的文件大小超过该值时将会抛出一个FileUploadException异常,提示文件太大; 用捕获异常来控制大文件上传,这样做很不理想,能不能详细讲下common-upload组件有两个重要的优点:一是可以方便的实现大文件头预知(即如果上传的文件大于你所设置的最大文件尺寸,例如200m,那末可能在刚上传到1m的时候,已经得知文件头中文件的大小,并判断出非法上传,停止上传动作),这个功能在struts中体现,不过是模块的全局设置参数(个人觉得还可以改进);希望能给点知道指导多谢 1 jspsmartupload 的网站都没了,没人支持了2 上传大文件,内存益出不过上传图片还是很快的,如果想上传大文件,要改一下原代码;把内存释放掉我感觉还是不要用为好! 请教sql条件组合查询问题 让你的代码变得奇怪一些! Struts2 <s:url/>传递中文参数 mysql查询时有中文得不到返回结果 求助 数据表设计 conn.createStatement的参数问题 对weblogic8.1中有几处不解 请高手解答!关于JSP页面跳转?? rm格式文件,400-500M,要挂在网上,使用realplayer插件,但是在线播放要等很长时间才开始,为什么?怎么办? 大神请来 啊 求助 关于XML与CSS的问题请大家进来看看! JSP用什么可视化工具来编辑?
//初始化
mySmartUpload.initialize(pageContext);
//设置上载的最大值100M
mySmartUpload.setMaxFileSize(100 * 1024*1024);
//上载文件
mySmartUpload.upload();
这是我写的上传中的某一个文件中的代码,没有错啊,只不过我是jsp的
// 上传初始化时有错
su.initialize(pageContext);??????????????????有错???
不知道在Action里怎么得到 pageContext????
各位大哥,请指教!!! 谢谢了!!!
ServletConfig config = servlet.getServletConfig();
su.initialize(config,servletRequest,servletResponse);
用fileupload组件又太慢.
我的程序要求大文件上传.
1 jsp中的用法:
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
mySmartUpload.initialize(pageContext);
mySmartUpload.setTotalMaxFileSize(10000000);
mySmartUpload.upload();
2 Servlet中的用法:
SmartUpload mySmartUpload = new SmartUpload();
mySmartUpload.initialize(config,request,response);
mySmartUpload.setTotalMaxFileSize(10000000);
mySmartUpload.upload();
具体可以参看其标准example
至于效率问题,确实SmartUpload有先天不足,相信大家都看过其源码,针对上传的优化非常简单,对大文件的判断及处理有问题,完全是服务器端的内存能力处理。其它备选方案:cos及apache组织的common-upload及基于common-upload之上的struts的upload解决方案。cos方案也是比较经典的老牌upload组件,但是同jspsmartupload一样,存在一定的问题;common-upload组件有两个重要的优点:
一是可以方便的实现大文件头预知(即如果上传的文件大于你所设置的最大文件尺寸,例如200m,那末可能在刚上传到1m的时候,已经得知文件头中文件的大小,并判断出非法上传,停止上传动作),这个功能在struts中体现,不过是模块的全局设置参数(个人觉得还可以改进);二是可以实现写disk缓存,即如果上传文件大于全局设置的temp值(如2m),那末上传的文件流会写到默认或指定的temp目录去,而不是纯粹占用服务器的内存(可以设想用jspsmartupload上传一个1G的movie看看,在上传的过程中,服务器的内存消耗直线上升,直到1G,如果有多用户的并发,死机就难以避免了)。
有办法更快吗??????????????????
如果你解决我的这个问题,送上500分,怎么样????????????
FileUpload对象的一些参数值—sizeMax、sizeThreshold、repositoryPath:SizeMax 用来设置上传文件大小的最大值,一旦用户上传的文件大小超过该值时将会抛出一个FileUploadException异常,提示文件太大; SizeThreshold 设置内存中缓冲区的大小,一旦文件的大小超过该值的时候,程序会自动将其它数据存放在repositoryPath指定的目录下作为缓冲。合理设置该参数的值可以保证服务器稳定高效的运行; RepositoryPath 指定缓冲区目录。
想必这几个参数你肯定不会写错吧?其它原因:1 防病毒软件的问题
在上传过程中,防病毒软件发现服务器上的文件改变,so实时去scan了,导致缓慢;2 网络因素
看看本地上传与远程上传有无区别,有可能是网络设备配置的问题。重点关注方面:
个人觉得上传的速度主要取决于SizeThreshold参数,默认是4096,即大概4k;
但是这个数值建议更改为256 * 1024,即256k利用commons-fileupload的struts的上传速度快很多,实际上就是在struts的CommonsMultipartRequestHandler文件中默认的SizeThreshold参数提高为256k。
DiskFileUpload fu = new DiskFileUpload();
// 设置允许用户上传文件大小,单位:字节
fu.setSizeMax(1000*1024*1024);
// 设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(1*1024*1024);//1M但是还是很慢,一个50M的文件上传最少要5分钟!就是平均没分钟不到10M.这样的速度客户无法满意.
还有没有其他的可能?????需要设置SocketSendBufferLength吗(Winsock 进行通信时的发送缓冲区)??
我设置了还是没用;我把杀毒软件全关了.网络是局域网.如果你能帮我解决这个问题,当重谢!!决不食言!!!!
SizeMax 设置上传文件大小的最大值,一旦用户上传的文件大小超过该值时将会抛出一个FileUploadException异常,提示文件太大; 用捕获异常来控制大文件上传,这样做很不理想,
能不能详细讲下common-upload组件有两个重要的优点:
一是可以方便的实现大文件头预知(即如果上传的文件大于你所设置的最大文件尺寸,例如200m,那末可能在刚上传到1m的时候,已经得知文件头中文件的大小,并判断出非法上传,停止上传动作),这个功能在struts中体现,不过是模块的全局设置参数(个人觉得还可以改进);希望能给点知道指导
多谢
2 上传大文件,内存益出不过上传图片还是很快的,如果想上传大文件,要改一下原代码;把内存释放掉我感觉还是不要用为好!