急急急~~~请高手帮忙解决struts导入excel时,文件超过70kb就报错

le_allen 2011-01-27 04:35:53
struts1.2+tomcat5.0
excel导入sql2000数据库
在本地项目上导入几M的excel都不会报错,但是放在服务器上超过70k的就报错 报错信息是
Processing of multipart/form-data request failed. Socket read faile

Action里面的代码如下
/******************上传文件*****************************/
String encoding = request.getCharacterEncoding();
if ((encoding != null) && (encoding.equalsIgnoreCase("utf-8"))){
//如果没有指定编码,编码格式为gb2312
response.setContentType("text/html; charset=gb2312");
}
//把文件读入
InputStream stream = file.getInputStream();

OutputStream bos = new FileOutputStream(filePath+"save_xb_importexcel\\" +file.getFileName());

request.setAttribute("fileName",filePath+"save_xb_importexcel\\"+file.getFileName());


int bytesRead = 0;
byte[] buffer = new byte[81920];
while ((bytesRead = stream.read(buffer, 0, 81920)) != -1)
{
//将文件写入服务器
bos.write(buffer, 0, bytesRead);
}
bos.close();
stream.close();
/******************上传文件 end*****************************/


jsp页面的代码如下:

<html:form action="/xb/hkxbImportExcel.do" method="post" styleId="web_xb_form" enctype="multipart/form-data" >
<html:file styleId="files" property="theFile" style="height:25px;" />

...全文
168 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjliuzg 2011-01-28
  • 打赏
  • 举报
回复
不就两种情况吗,一是数据库超长了(绝对不是类型不对,要是的话,1K也会报错);二是byte[] buffer = new byte[81920];超了你的缓存了,自己都知道超过70K的文件就报错了,你把这个改成 byte[] buffer = new byte[71680];不够的话用循环操作,不会循环的话再出来问吧。



sjlzcj 2011-01-27
  • 打赏
  • 举报
回复
如果可以的话 源码发来一份 sjlzcj@163.com 36077516
le_allen 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 whut_lcy 的回复:]
引用 2 楼 le_allen 的回复:
引用 1 楼 java_cxrs 的回复:
Java code
byte[] buffer = new byte[81920];


是这的原因吧
数值改大点

不是这个原因,我试过了。找了好久 可就是不知道问题出在什么地方


肯定不是这个原因。塞不进db,你把db的那个字段调大一点。PS:db的这个字段是什么类型?image?b……
[/Quote]

db字段用的是varchar的 不是字段出问题
只要excel小于70K的导入就没问题,我导入的是要excel的数据,不是要文件的。所以我一直都搞不清楚是咋回事啊
whut_lcy 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 le_allen 的回复:]
引用 1 楼 java_cxrs 的回复:
Java code
byte[] buffer = new byte[81920];


是这的原因吧
数值改大点

不是这个原因,我试过了。找了好久 可就是不知道问题出在什么地方
[/Quote]

肯定不是这个原因。塞不进db,你把db的那个字段调大一点。PS:db的这个字段是什么类型?image?binary?
lujun0108 2011-01-27
  • 打赏
  • 举报
回复
//将文件写入服务器
bos.write(buffer, 0, bytesRead);
bos.flush();

flush一下呢?
le_allen 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lujun0108 的回复:]

你ping一下你的服务器是不是会掉包啊
[/Quote]
应该不会,只要低于70K的excel就能成功的导入
lujun0108 2011-01-27
  • 打赏
  • 举报
回复
你ping一下你的服务器是不是会掉包啊
le_allen 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java_cxrs 的回复:]
Java code
byte[] buffer = new byte[81920];


是这的原因吧
数值改大点
[/Quote]
不是这个原因,我试过了。找了好久 可就是不知道问题出在什么地方
不善^ 2011-01-27
  • 打赏
  • 举报
回复
byte[] buffer = new byte[81920];

是这的原因吧
数值改大点

67,549

社区成员

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

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