struts2上传超过2G的大附件问题

yiyi_wx 2012-11-23 04:11:13
struts.xml和struts.properties都按网上说的分别设置了struts.multipart.maxSize和struts.multipart.maxSize的大小。
但发现无论设置的再大,上传附件时最多也只能上传1个多G的附件,超过2G时页面提示“无法显示网页”,tomcat并不报错。跟踪了下代码发现并没有进入action,应该还是被拦截了。
根据项目实际,很可能有几个G甚至十几G的附件需要上传,请问各位高手,像这种上传大附件的需要怎么配置,或者说要如何实现?谢谢
...全文
451 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyi_wx 2012-12-28
  • 打赏
  • 举报
回复
最后采取了拆分文件的形式,非常感谢诸位
yjflinchong 2012-11-26
  • 打赏
  • 举报
回复
引用 1 楼 forgetsam 的回复:
压缩,拆。 腾讯百度都不支持几十G的上传,你多大规模的项目要支持这个? 一般有这种250需求的都是政府项目,骗过去就完事了。
比较赞同这个。 都是政府项目有这种 250 需求啊
dracularking 2012-11-26
  • 打赏
  • 举报
回复
引用 11 楼 zhangchao19890805 的回复:
引用 5 楼 dracularking 的回复:如果利用struts本身的功能进行文件传输(我不确定)看楼主的描述,它可能进行了限制。 但如果自己来传(不利用它本身功能),应该不至于受到大小的限制,按流的形式进行传输,传一点存一点,它怎么按大小限制呢?处于安全的考虑,服务器对于连接时间是有限制的
非常感谢回答,纯探讨,连接时间长为什么不安全?因为用大小定性的方式去界定程序的恶意程度貌似不够严谨。比方说设定传输时间为5分钟,而不是10分钟,就因为怕5分钟以上的传输时间会造成什么恶果呢 再说假设这个连接时间存在,这个设置多半是业务逻辑吧,可以改的吧
dracularking 2012-11-26
  • 打赏
  • 举报
回复
引用 14 楼 zhangchao19890805 的回复:
如果连接时间没有限制,那么别人可以给你写个提交http请求的程序,然后用死循环不断的网你的服务器上传送数据,占用你的服务器资源。如果使用多个肉鸡同时运行这种程序,那你的服务器很快就崩溃了。连接时间过长也有上述的问题。这是服务器的设计者对一般情况的分析,不是针对某种特定的应用。这个连接时间应该可以改,但你得确定是可以信任的用户。
我本来是想说这个:“如果是为了防止占用过多资源而采取这种措施,那相应带来的大文件不能传输的缺陷又怎么弥补呢?不是有种拆东墙补西墙的感觉么。” 但我现在明白了,你想说的是防止超长时间的限制吧,所以一般意义上的大文件传输不会妨碍。
zhangchao19890805 2012-11-26
  • 打赏
  • 举报
回复
引用 5 楼 dracularking 的回复:
如果利用struts本身的功能进行文件传输(我不确定)看楼主的描述,它可能进行了限制。 但如果自己来传(不利用它本身功能),应该不至于受到大小的限制,按流的形式进行传输,传一点存一点,它怎么按大小限制呢?
处于安全的考虑,服务器对于连接时间是有限制的
zhangchao19890805 2012-11-26
  • 打赏
  • 举报
回复
引用 12 楼 dracularking 的回复:
引用 11 楼 zhangchao19890805 的回复: 引用 5 楼 dracularking 的回复:如果利用struts本身的功能进行文件传输(我不确定)看楼主的描述,它可能进行了限制。 但如果自己来传(不利用它本身功能),应该不至于受到大小的限制,按流的形式进行传输,传一点存一点,它怎么按大小限制呢?处于安全的考虑,服务器对于连接时间是有限制的 非常感谢回答,纯探讨,连接时间……
如果连接时间没有限制,那么别人可以给你写个提交http请求的程序,然后用死循环不断的网你的服务器上传送数据,占用你的服务器资源。如果使用多个肉鸡同时运行这种程序,那你的服务器很快就崩溃了。连接时间过长也有上述的问题。这是服务器的设计者对一般情况的分析,不是针对某种特定的应用。这个连接时间应该可以改,但你得确定是可以信任的用户。
diypyh 2012-11-24
  • 打赏
  • 举报
回复
文件太大,宽带不够,会出现连接超时的。
germy2 2012-11-24
  • 打赏
  • 举报
回复
引用 楼主 yiyi_wx 的回复:
struts.xml和struts.properties都按网上说的分别设置了struts.multipart.maxSize和struts.multipart.maxSize的大小。 但发现无论设置的再大,上传附件时最多也只能上传1个多G的附件,超过2G时页面提示“无法显示网页”,tomcat并不报错。跟踪了下代码发现并没有进入action,应该还是被拦截了。 根据……
内部局域网,10MB/S的速度才能扛得住1G的上传吧。否则外网别说1G,50MB你都无法上传成功了。 如果服务器带宽大,用户网速快还好说。普通的应用根本就不行,像这样的大文件上传需求都必须使用断点续传功能的上传控件。 比如QQ邮箱中的大附件上传功能,115网盘,DBank(华为网盘),百度网盘
fLiow6enn 2012-11-24
  • 打赏
  • 举报
回复
引用 7 楼 ftaomanman 的回复:
Xproer.HttpUploader5:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html 此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。 页面调用示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>HTTP断点续传控件与MySQL数据库演示页面(UTF-8)</title>
    <link href="HttpUploader/HttpUploader.css" type="text/css" rel="Stylesheet"/>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/FileLister.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/HttpUploader.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/combinbox.js"></script>
    <script type="text/javascript" src="HttpUploader/jquery-1.3.2.min.js"></script>
    <script language="javascript" type="text/javascript">
    	var cbItemLast = null;
    	var cbMgr = new CombinBoxMgr();

    	$(document).ready(function()
    	{
    		cbMgr.LoadInControl("FilePanel");
    		cbMgr.Init();
    	});
    </script>
</head>
<body>
	<div id="FilePanel"></div>
</body>
</html>
资源下载: CAB安装包 EXE安装包 开发文档 升级日志 ASP.NET(C#)示例代码: ASP.NET-ACCESS示例 ASP.NET-SQL2005示例 JSP示例代码: JSP-ACCESS-GB2312示例 JSP-ACCESS-UTF8示例 JSP-SqlServer2005-UTF8示例 JSP-MySQL-UTF8示例 PHP示例代码: PHP-MySQL-UTF8示例 Chrome,Firefox,IE断点续传控件示例(以下示例已整合IE32,IE64,Firefox,Chrome平台的插件) ASP.NET-ACCESS示例 ASP.NET-SQL2005示例 JSP示例代码: JSP-ACCESS-GB2312示例 JSP-ACCESS-UTF8示例 JSP-SqlServer2005-UTF8示例 JSP-MySQL-UTF8示例 PHP示例代码: PHP-MySQL-UTF8示例
好东西,收下了。最近项目也有一个这样的需求,正在寻找这样的解决方案。
ftaomanman 2012-11-24
  • 打赏
  • 举报
回复
引用 楼主 yiyi_wx 的回复:
struts.xml和struts.properties都按网上说的分别设置了struts.multipart.maxSize和struts.multipart.maxSize的大小。 但发现无论设置的再大,上传附件时最多也只能上传1个多G的附件,超过2G时页面提示“无法显示网页”,tomcat并不报错。跟踪了下代码发现并没有进入action,应该还是被拦截了。 根据……
网上有一个Web超大文件上传断点续传控件:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html 此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。 粘贴文件,简化选择文件操作: 文件MD5值计算进度: 文件MD5值计算完毕 服务器根据MD5检测是否存在相同文件 续传文件 从服务器加载文件列表 文件上传中 文件上传完毕 上传文件夹 与Discuz!X2整合-后台安装断点续传控件 与Discuz!X2整合-后台启用断点续传控件 与Discuz!X2整合-后台断点续传控件启用成功 与Discuz!X2整合-前台发帖页面 与Discuz!X2整合-上传 页面调用示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>HTTP断点续传控件与MySQL数据库演示页面(UTF-8)</title>
    <link href="HttpUploader/HttpUploader.css" type="text/css" rel="Stylesheet"/>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/FileLister.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/HttpUploader.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/combinbox.js"></script>
    <script type="text/javascript" src="HttpUploader/jquery-1.3.2.min.js"></script>
    <script language="javascript" type="text/javascript">
    	var cbItemLast = null;
    	var cbMgr = new CombinBoxMgr();

    	$(document).ready(function()
    	{
    		cbMgr.LoadInControl("FilePanel");
    		cbMgr.Init();
    	});
    </script>
</head>
<body>
	<div id="FilePanel"></div>
</body>
</html>
资源下载: CAB安装包 EXE安装包 开发文档 升级日志 ASP.NET(C#)示例代码: ASP.NET-ACCESS示例 ASP.NET-SQL2005示例 JSP示例代码: JSP-ACCESS-GB2312示例 JSP-ACCESS-UTF8示例 JSP-SqlServer2005-UTF8示例 JSP-MySQL-UTF8示例 PHP示例代码: PHP-MySQL-UTF8示例 Chrome,Firefox,IE断点续传控件示例(以下示例已整合IE32,IE64,Firefox,Chrome平台的插件) ASP.NET-ACCESS示例 ASP.NET-SQL2005示例 JSP示例代码: JSP-ACCESS-GB2312示例 JSP-ACCESS-UTF8示例 JSP-SqlServer2005-UTF8示例 JSP-MySQL-UTF8示例 PHP示例代码: PHP-MySQL-UTF8示例
flvhonngyvou 2012-11-24
  • 打赏
  • 举报
回复
引用 楼主 yiyi_wx 的回复:
struts.xml和struts.properties都按网上说的分别设置了struts.multipart.maxSize和struts.multipart.maxSize的大小。 但发现无论设置的再大,上传附件时最多也只能上传1个多G的附件,超过2G时页面提示“无法显示网页”,tomcat并不报错。跟踪了下代码发现并没有进入action,应该还是被拦截了。 根据……
struts2肯定不行了,一般情况下超过50MB的文件在实际项目中应用的话都需要借助于控件来实现。而且控件需要带断点续传功能。普通上传控件功能在实际项目可能无法使用。因为网络不稳定,网速慢,这些情况可能会导致SESSION超时。
dracularking 2012-11-23
  • 打赏
  • 举报
回复
如果利用struts本身的功能进行文件传输(我不确定)看楼主的描述,它可能进行了限制。 但如果自己来传(不利用它本身功能),应该不至于受到大小的限制,按流的形式进行传输,传一点存一点,它怎么按大小限制呢?
MIT的梦 2012-11-23
  • 打赏
  • 举报
回复
分开传。文件过大容易丢失数据。下载下来也白下
lzh_me 2012-11-23
  • 打赏
  • 举报
回复
可以用FTP做上传
Artemis丶月 2012-11-23
  • 打赏
  • 举报
回复
你见过哪个上传有g级别的,远程传送哪个有不丢包的,你越大,时间越长,你的丢包率就越高 话句话说,你上传a文件到b服务器,等你上传完,b服务器接收的文件就未必和你的文件一样了,再说万一失去连接,你就白等了 所以,建议拆,分开传,文件越小越好,完毕
forgetsam 2012-11-23
  • 打赏
  • 举报
回复
压缩,拆。 腾讯百度都不支持几十G的上传,你多大规模的项目要支持这个? 一般有这种250需求的都是政府项目,骗过去就完事了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧