急急急!~各位高手留步,文件上传的问题,解决马上结贴!100分~

element_wm 2007-10-11 10:39:14
问题是这样的,我们需要上传20M之内的文件到服务器。在我的机器上一切正常,让别人连我的机器也是没有没有问题的。我的机器只跑TOMCAT,所链接的数据库和FTP服务器都是我们的服务器的那台机器,我的操作系统是XP。但是,现在把程序一放到服务器的TOMCAT下的时候,就无法上传大于14M的文件,一上传就出错,已经郁闷两天了,各位谁知道这是怎么回事?
我已经尝试过更换WAR包,以及直接将自己机器上的TOMCAT下的那个程序的文件夹直接拷贝过去,都不行。我重装过服务器上的TOMCAT,也不行。尝试更改了服务器上的TOMCAT的内存,已经停掉了IIS,都没作用。
最终我定位到了出错的一句话就是:
private boolean writeFileToHD(FormFile[] files, String filePath) {
// 定义返回值
boolean returnResult = false;

// 定义文件类型变量保存文件
File file = new File(filePath);

delFileFolder(file);

// 如果文件路径不存在
if (!file.exists()) {
// 创建路径
file.mkdirs();

}

String fileName = "";

try {
// 定义文件输出流
OutputStream outSteam;
for (int i = 0; i < files.length; i++) {

fileName = files[i].getFileName();

// 初始化文件流
outSteam = new FileOutputStream(filePath + "\\" + fileName);

try{
//将文件写入服务器
outSteam.write(files[i].getFileData());
}catch(Exception e){
System.out.println("Error:"+e.getMessage()+"--Size:"+files[i].getFileSize());
}

// 刷新输出流
outSteam.flush();

// 关闭流
outSteam.close();

// 销毁文件
files[i].destroy();

}
returnResult = true;
} catch (FileNotFoundException e) {
returnResult = false;
} catch (IOException e) {

returnResult = false;
}
return returnResult;
}

中的:
try{
//将文件写入服务器
outSteam.write(files[i].getFileData());
}catch(Exception e){
System.out.println("Error:"+e.getMessage()+"--Size:"+files[i].getFileSize());
}
这句,而且catch不到错误

现在想要把字节流分段写入试一下,可是却不知道具体的实现方式,谁能告诉我一下

问题解决后,马上100分奉上

...全文
266 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
靠谱的熊 2011-12-30
  • 打赏
  • 举报
回复
Aaaa
靠谱的熊 2011-12-30
  • 打赏
  • 举报
回复
朋友 我也遇到了这样的问题。最终查出结果是我们的路由器限制了某些p2p过滤。我上路由器把所有的限制全部取消了。然后就可以了。你可以试试看
element_wm 2007-11-06
  • 打赏
  • 举报
回复
qsc800528 帮我想了一个折中的办法,虽然没有解决,也可暂时蒙混过关了。结贴
element_wm 2007-10-23
  • 打赏
  • 举报
回复
顶上来
shenxiaolei123 2007-10-16
  • 打赏
  • 举报
回复
编高译不通过,还是运行出错
element_wm 2007-10-16
  • 打赏
  • 举报
回复
楼上的方法也试过了,关键就是直接在files[i].getInputStream();这句就出错了
shenxiaolei123 2007-10-16
  • 打赏
  • 举报
回复
FormFile 是struts的上传.
InputStream is = files[i].getInputStream();//或得上传文件输入流
FileOupputStream fos = new FileOupputStream();//文件输入流
byte[] buf = new byte[1024*8];
while(true)
{
int len = is.read(buf);
if(len==-1)
{
break;
}
fos.write(buf,0,len);//写入
}
fos.close();
is.close();
让它每次读1024*8个字节.
shenxiaolei123 2007-10-16
  • 打赏
  • 举报
回复
流上传,对服务器压力大
为什么不用每三方的包.像jspsmartupload.jar..
qsc800528 2007-10-16
  • 打赏
  • 举报
回复
帮顶,事情很急,大家帮帮忙,推荐用过
操作系统:Server2003
服务器:tomcat
语言:Java
环境,有过大数据量上传的有经验的老师进来指导下,谢谢
element_wm 2007-10-16
  • 打赏
  • 举报
回复
是运行时报错,只要超过14M的文件,只要一上传就出现下面的错误,而且这个错误捕捉不到
type:Status report
message:Dispatch[/wjcj]to method upLoadFile returned an exception
description Thi server encountered an internal error(Dispatch[/wjcj] to method
upLoadFile returned an exception)that prevented it from fulfilling this request.
element_wm 2007-10-15
  • 打赏
  • 举报
回复
各位高手都没办法吗?帮忙看下吧~
element_wm 2007-10-12
  • 打赏
  • 举报
回复
顶上来!~~
element_wm 2007-10-11
  • 打赏
  • 举报
回复
to二楼的yangzhongwei1031兄弟:
我也是这么想的,也就是我在问题最后那部分写的,我想知道如何分隔文件的字节流,能否说明一下
johnsoncr 2007-10-11
  • 打赏
  • 举报
回复
顶起来
铁臂阿童木头 2007-10-11
  • 打赏
  • 举报
回复
如果一次无法传输大于14MB的文件,你可以在上传的时候分段传输,只要每段的大小不要超过14MB就行了,等全部接收完后将这些分段的文件拼接起来生成一个完整的文件。类似于那种分段压缩一样,解压缩的时候也是每段拼起来的。不过应该挺复杂的,你可以试试
wesker0918 2007-10-11
  • 打赏
  • 举报
回复
貌似操作系统有限制上传文件大小 你可以试着找下这方面的解决办法
element_wm 2007-10-11
  • 打赏
  • 举报
回复
非常感谢楼上的二位
在我的问题中已经说了,这个方法我试过了
xiyuan1999 2007-10-11
  • 打赏
  • 举报
回复
可以设置一下tomcat的内存配置
我原来作下载的时候也有这个问题,后来把tomcat的内存值调大后就好了


这个应该可以的设置一下tomcat的内存配置 设置足够大的
dhq0819 2007-10-11
  • 打赏
  • 举报
回复
可以设置一下tomcat的内存配置
我原来作下载的时候也有这个问题,后来把tomcat的内存值调大后就好了
element_wm 2007-10-11
  • 打赏
  • 举报
回复
上面那个也否决了,我刚才找到方法了
int readBytes = 0;
int totalRead = 0;
ByteArrayInputStream b1 = new ByteArrayInputStream(files[i].getFileData());
byte[] b = new byte[blockSize];
while (readBytes != -1) {
readBytes = b1.read(b, 0, blockSize);
if (readBytes == -1) {
break;
}
totalRead += readBytes;

outSteam.write(b, 0, blockSize);
}

还是那样,在我的机器上好用,放到服务器上就不行了。
各位老大,各位版主,都帮帮忙吧,客户在等着呢,急疯了~~~
加载更多回复(6)

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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