try { //ewr/werw/231231231.sql fileName = System.currentTimeMillis() + this.subFileType(file); url = path + "\\" + fileName; FileOutputStream fos = new FileOutputStream(url); if (file.getInputStream() instanceof ByteArrayInputStream) { ByteArrayInputStream fis = (ByteArrayInputStream) file .getInputStream(); byte[] buffer = new byte[1024 * 2]; int len = -1; while ((len = fis.read(buffer)) != -1) { fos.write(buffer, 0, len); } fis.close(); } else { FileInputStream fis = (FileInputStream) file .getInputStream(); byte[] buffer = new byte[1024 * 2]; int len = -1; while ((len = fis.read(buffer)) != -1) { fos.write(buffer, 0, len); } fis.close(); } fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); } } return new String(fullDir+"\\"+fileName); } 会报格式匹配错误
哪一行报的错知道吗?你把报错的log贴出来看看,你这样说是看不出来的。
server 10:37:45 严重: Servlet.service() for servlet action threw exception java.lang.ClassCastException: java.io.ByteArrayInputStream at com.mrk.projectmanager.web.action.DataAction.add(DataAction.java:91) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187) at com.mrk.projectmanager.web.action.BaseAction.execute(BaseAction.java:30) at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.mrk.projectmanager.filters.PagerLocalThreadFilter.doFilter(PagerLocalThreadFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
public String uploadFile(FormFile formFile, HttpServletRequest request,
String fullDir) throws FileNotFoundException {
FormFile file = formFile;
String fulldir = fullDir;
String url = "";
String dir = request.getSession().getServletContext().getRealPath("/")
+ fulldir;
String fileName = new String();
if (file.getFileName() != null && !"".equals(file.getFileName())) {
// 指定上传文件的位置
File uploadFile = new File(dir);
// 绝对路径
String path = uploadFile.getAbsolutePath(); // 判断指定路径dir是否存在,不存在则创建路径
if (!uploadFile.exists() || uploadFile == null) {
uploadFile.mkdirs();
}
try {
//ewr/werw/231231231.sql
fileName = System.currentTimeMillis()
+ this.subFileType(file);
url = path + "\\" + fileName;
FileOutputStream fos = new FileOutputStream(url);
if (file.getInputStream() instanceof ByteArrayInputStream) {
ByteArrayInputStream fis = (ByteArrayInputStream) file
.getInputStream();
byte[] buffer = new byte[1024 * 2];
int len = -1;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fis.close();
} else {
FileInputStream fis = (FileInputStream) file
.getInputStream();
byte[] buffer = new byte[1024 * 2];
int len = -1;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fis.close();
}
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return new String(fullDir+"\\"+fileName);
}
会报格式匹配错误
严重: Servlet.service() for servlet action threw exception
java.lang.ClassCastException: java.io.ByteArrayInputStream
at com.mrk.projectmanager.web.action.DataAction.add(DataAction.java:91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at com.mrk.projectmanager.web.action.BaseAction.execute(BaseAction.java:30)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.mrk.projectmanager.filters.PagerLocalThreadFilter.doFilter(PagerLocalThreadFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
或者你直接用apache的fileupload组件
我提问的一个帖子有后台
http://topic.csdn.net/u/20091111/17/8fa87372-b003-4ebb-90fe-db3b20c08311.html
代码需要完善。
com.mrk.projectmanager.web.action.DataAction.add(DataAction.java:91) 这个方法里报的类型转换错误.上这个方法的91行看去