我用commons.fileupload 做上传时传20~~~200多M以上的文件都内存泄露,传小文件都没问题```网上找了好多方法都没用``请教各位高手了啊```希望大家不要吝啬自己的技术
我的代码如下::
String saveDirectory = "z:\\";
String tmpDirectory = "z:\\"; int maxPostSize =1024*1024*200;
System.out.println(maxPostSize);
String FileDescription = null; String FileName = null;
long FileSize = 0;
String ContentType = null; int count = 0 ;
DiskFileUpload upload = new DiskFileUpload(); upload.setSizeThreshold(2000000000); upload.setSizeMax(maxPostSize);
upload.setRepositoryPath(tmpDirectory); List /* FileItem */ items = (List)upload.parseRequest(request);
Iterator iter = items.iterator();
int tmp = 0;
FileItem tmpItem = null;
while (iter.hasNext())
{
tmp++;
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
FileDescription = item.getString();
} else {
FileName = item.getName();
try {
// for wintel platform
FileName = FileName.substring(FileName.lastIndexOf("\\")+1);
// for unix-like platform
FileName = FileName.substring(FileName.lastIndexOf("/")+1);
} catch ( Exception ex ) {
ex.printStackTrace();
}
ContentType = item.getContentType();
FileSize = item.getSize();
tmpItem = item;
} if (tmp == 1 && FileSize != 0)
{
count ++;
try {
System.out.println(FileName);
File uploadedFile = new File(saveDirectory + FileName);
tmpItem.write(uploadedFile);
} catch ( Exception ex ) {
System.out.println(ex);
}
tmp = 0;
} else if (tmp == 2 && FileSize == 0) {
tmp = 0;
} // end if
} // end while
报的错误是:
严重: Servlet.service() for servlet action threw exception
java.lang.OutOfMemoryError: Java heap space
我的代码如下::
String saveDirectory = "z:\\";
String tmpDirectory = "z:\\"; int maxPostSize =1024*1024*200;
System.out.println(maxPostSize);
String FileDescription = null; String FileName = null;
long FileSize = 0;
String ContentType = null; int count = 0 ;
DiskFileUpload upload = new DiskFileUpload(); upload.setSizeThreshold(2000000000); upload.setSizeMax(maxPostSize);
upload.setRepositoryPath(tmpDirectory); List /* FileItem */ items = (List)upload.parseRequest(request);
Iterator iter = items.iterator();
int tmp = 0;
FileItem tmpItem = null;
while (iter.hasNext())
{
tmp++;
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
FileDescription = item.getString();
} else {
FileName = item.getName();
try {
// for wintel platform
FileName = FileName.substring(FileName.lastIndexOf("\\")+1);
// for unix-like platform
FileName = FileName.substring(FileName.lastIndexOf("/")+1);
} catch ( Exception ex ) {
ex.printStackTrace();
}
ContentType = item.getContentType();
FileSize = item.getSize();
tmpItem = item;
} if (tmp == 1 && FileSize != 0)
{
count ++;
try {
System.out.println(FileName);
File uploadedFile = new File(saveDirectory + FileName);
tmpItem.write(uploadedFile);
} catch ( Exception ex ) {
System.out.println(ex);
}
tmp = 0;
} else if (tmp == 2 && FileSize == 0) {
tmp = 0;
} // end if
} // end while
报的错误是:
严重: Servlet.service() for servlet action threw exception
java.lang.OutOfMemoryError: Java heap space
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货