发表新主题 回复该帖子
主题:使用apache的io包中IOUtils上传不了超过300M的文件
菜鸟
帖子档案  楼主 使用apache的io包中IOUtils上传不了超过300M的文件   Post by : 2009-08-06 10:28:57.0
  • 幼儿园
  • 幼儿园
  • UID:30
  • 主题:53
  • 帖子:96
  • 加为好友 加为好友    发送短信 发送短信

项目中需要上传一些比较大的备份附件,动不动就几百兆,客户反应超过300M就传不上去了,我测试了一下果真如此,后台也不报错,犯晕了,使用的是Apache的IO包。部分代码:

上传附近方法:
private boolean upload(String storePath, InputStream is){
boolean isUploaded = false;
String directory = getDirectory(storePath); // 获取文件所在目录
boolean isExist = existsDirectory(directory); // 判断目录是否存在
if(!isExist)
createDirectory(directory); // 不存在创建
OutputStream os = null;
try {
os = new FileOutputStream(storePath);
IOUtils.copy(is, os);
isUploaded = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(os!=null){
        try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return isUploaded;
}


Action中获取到页面上传的FormFile,用的Struts
FormFile contractAttach = contractForm.getContractAttach();
InputStream is = contractAttach.getInputStream();  // 获取输入流
boolean isSucc = upload(storePath, is);  // 调用上面的上传文件方法

不明原因,请有经验的老鸟指教。PS:低于300M的文件上传毫无问题。

返回页面顶部  

唧唧
2F Re:~   Post by : 2009-08-06 10:30:45.0
  • 幼儿园
  • 幼儿园
  • UID:3
  • 主题:342
  • 帖子:781
  • 加为好友 加为好友    发送短信 发送短信
是不是 应用服务器限制了?比如 tomcat 和 虚拟内存的大小
签名
 ★★★★★★★★
 纵里寻她千百度,蓦然回首,那人却在,灯火阑珊处!
 MyBlog :http://blog.javawind.net
返回页面顶部  

菜鸟
3F Re:~   Post by : 2009-08-06 10:31:02.0
  • 幼儿园
  • 幼儿园
  • UID:30
  • 主题:53
  • 帖子:96
  • 加为好友 加为好友    发送短信 发送短信
找到解决方案,在struts的配置文件尾部追加以下配置即可提高struts文件上传尺度的上限,默认250M。
<controller maxFileSize="1024M" />
返回页面顶部  


CopyRight © 2008-2009 JavaWind.Net Studio All Rights Reserved
Powered By JWind.BBS Vesion 1.0.0 Beta1 Processed in 16 ms,0 (Queries)  Gzip enabled

WAP - 清除Cookies - 联系我们 - JavaWind.Net Studio - Archiver - TOP Valid XHTML 1.0 Transitional Valid CSS! 粤ICP备07511478号