日期:2014-05-17  浏览次数:20679 次

请教一个struts1.x的文件上传问题
今天在网上查了一下关于文件上传的资料,然后写了一个上传类,代码如下:

package com.ssoft.tools;

import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.struts.upload.FormFile;

public class UploadFile {
public static boolean starUpload(String path, FormFile file){
//定义上传文件的路径
String filePath = path;
//System.out.println(filePath);
OutputStream os = null;

try {
//获取文件扩展名
String ext = file.getFileName().substring(file.getFileName().lastIndexOf("."), file.getFileName().length());
//组合文件全名
String fileName = ChangeDate.createPK() + ext;
//开始上传文件
os = new FileOutputStream(filePath + "\\" + fileName);
//System.out.println(file.getFileData().length+"");
os.write(file.getFileData(), 0, file.getFileSize());
os.flush();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
try {
os.close();
return true;
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
return false;
}
}

现在问题是:
  上传不大的文件时(大约几十兆),能正常上传到服务器,但上传大一点的文件(约100兆)就出问题了,服务器接收到的文件大小为0kb,跟踪了一下程序,发现问题是在file.getFileData(),只要执行到这里就会直接跳到os.close(),网上也找了一下,没有这方面的说明,请各位指点一下,谢了!

------解决方案--------------------
需要指定最大能上传多少
------解决方案--------------------
配置 !!!1
------解决方案--------------------
楼上的,这与计算机的性能有关系吧
写文件时首先要把文件读到内存,然后再写到硬盘上
你第一次的例子:是把文件一次性读到内存,有时候你计算机应用程序占用了很多内存,一次读到内存,就
会出现装不下的情况。

第二次的例子: 是把每次把文件的8192 B大小读到内存中,然后转存硬盘

不知道楼主对答案是否满意呢?、