struts1上传220M文件报错!求助!

zzxx8880 2011-10-21 05:43:03
2011-10-21 9:31:35 org.apache.struts.upload.CommonsMultipartRequestHandler handl
eRequest
严重: Failed to parse multipart request
org.apache.commons.fileupload.FileUploadException: Processing of multipart/form-
data request failed. Stream ended unexpectedly
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadB
ase.java:429)
at org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest
(CommonsMultipartRequestHandler.java:193)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:442)
at org.apache.struts.action.RequestProcessor.processPopulate(RequestProc
essor.java:816)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:203)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
6)
at actions.MyActionServlet.doPost(MyActionServlet.java:32)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44
7)
at java.lang.Thread.run(Unknown Source)


上面是Tomcat控制台报错,我在Struts-config里面设定的大小是1000M的。
上传一个15M的小视频就没有问题的,求高人解答下。
...全文
217 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kouyiSC 2011-10-24
  • 打赏
  • 举报
回复
人家是struts1...!!!!!!!!!!!
qq497525725 2011-10-24
  • 打赏
  • 举报
回复
需要设置下缓冲区大小,要不然,内存溢出.
<!-- 设置Struts2默认的最大上传为1G -->
<constant name="struts.multipart.maxSize" value="1073741824"></constant>



/*
* 上传文件
*/
public String uploadFile(File upload, String uploadFileName,
String directory) {
String path = "upload";

String filePath = "";
try {

HttpServletRequest request = ServletActionContext.getRequest();

String fileName = uploadFileName;

// 获取物理路径
String sPath = request.getRealPath(path+File.separator + directory)+File.separator;
// 获取网络地址
filePath = path + "/" + directory
+ "/" + fileName;

String outputFileName = sPath + fileName;

File outputPathFile = new File(sPath);
if (!outputPathFile.exists()) {
outputPathFile.mkdirs();
}

// 保存文件
File outputFile = new File(outputFileName);
java.io.InputStream is = new FileInputStream(upload);
java.io.OutputStream os = new java.io.FileOutputStream(outputFile);

if (outputFile.exists())
outputFile.delete();

byte buffer[] = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
os.write(buffer, 0, count);
}

os.close();
is.close();

} catch (Exception e) {
e.printStackTrace();
}
return filePath;
}



sw245711601 2011-10-24
  • 打赏
  • 举报
回复
mark
kouyiSC 2011-10-24
  • 打赏
  • 举报
回复
顶了。。。。。。。。
villagehead 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 goldenfish1919 的回复:]

HTTP不适合做大文件上传,要保证上传的质量得做专门的客户端
[/Quote]

it is!!

good luck
若鱼1919 2011-10-24
  • 打赏
  • 举报
回复
HTTP不适合做大文件上传,要保证上传的质量得做专门的客户端
zzxx8880 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 luciferoffans 的回复:]

有几处你修改下试试:
byte[] buf = new byte[docStream .available()];
Struts-config你怎么配置的啊,struts1设置文件上传大小还没玩过,学习下。
[/Quote]

1、在struts-config里面加入一个controller
<struts-config>
<controller maxFileSize="1000M" />
</struts-config>
2、在提交的Form表单里加入 enctype="multipart/form-data"
3、ActionForm里面声明FormFile的字段

满足以上三点就可以开动了!
Luciferoffans 2011-10-22
  • 打赏
  • 举报
回复
有几处你修改下试试:
byte[] buf = new byte[docStream .available()];
Struts-config你怎么配置的啊,struts1设置文件上传大小还没玩过,学习下。
zzxx8880 2011-10-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferoffans 的回复:]

麻烦问下是用的apache的common-fileupload上传吗?代码贴出一部分看看。
[/Quote]

public String upload(VideoForm videoForm){
String fileTime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());//文件上传时间
String fileName = fileTime + ".wmv"; //文件的物理名称=文件上传时间+格式
String filePath = PathConfig.getInstance().getProperty("videoPath"); //文件的物理存储路径从配置文件中获取
FormFile video = videoForm.getVideoFile(); //获取视频实体
//String fileDBName = photo.getFileName(); //文件的数据库名称
//String fileDBPath = filePath + fileName; //文件的数据库路径

int length = 0; //初始化长度
byte[] buf = new byte[1024]; //初始化流
//照片上传操作
try {
InputStream docStream = video.getInputStream(); //获取输入流
File videoFile = new File(filePath,fileName); //初始化一个photo对象,存储的路径,存储的名称。
FileOutputStream docfos = new FileOutputStream(videoFile); //初始化文件输出流
while((length=docStream.read(buf))!=-1)
{
docfos.write(buf, 0, length);
}
docStream.close();
docfos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return fileName;
}
Luciferoffans 2011-10-21
  • 打赏
  • 举报
回复
麻烦问下是用的apache的common-fileupload上传吗?代码贴出一部分看看。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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