使用apache的io包中IOUtils上传不了超过300M的文件

长公子冰 2009-08-05 10:21:13
项目中需要上传一些比较大的备份附件,动不动就几百兆,客户反应超过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的文件上传毫无问题。
...全文
307 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
长公子冰 2009-08-06
  • 打赏
  • 举报
回复
找到解决方案,在struts的配置文件尾部追加以下配置即可提高struts文件上传尺度的上限,默认250M。
<controller maxFileSize="1024M" />
长公子冰 2009-08-05
  • 打赏
  • 举报
回复
我的朋友也这么跟我说的。我机器就1G内存,还要干别的。不知道能给它多大,我试试!谢谢LSD!
jastby 2009-08-05
  • 打赏
  • 举报
回复
是不是 应用服务器限制了?比如 tomcat 和 虚拟内存的大小

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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