使用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的文件上传毫无问题。