关于从android端向服务器端上传文件的问题

isaactalx 2016-04-17 04:45:25
 RequestParams params = new RequestParams();
String urlpath=ConstantData.SERVICE_BASE_URL+"file/mobileupload.do";
File file=new File(filePath);
AsyncHttpClient client=new AsyncHttpClient();
params.put("userName",userName);
try {
params.put("file",file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
client.post(urlpath, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {

}

@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

}

@Override
public void onProgress(long bytesWritten, long totalSize) {
super.onProgress(bytesWritten, totalSize);
int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);
uploadButton.setProgress(count);
}
});

这是客户端上传文件的代码,用的是androidasynchttp的框架
@RequestMapping(value="/mobileupload.do",method=RequestMethod.POST)
public void moboleUpload(@RequestParam("userName") String userName,@RequestParam("file") MultipartFile file,HttpServletRequest request){
if(file!=null){
System.out.println(file.getName());
}
}

这是springmvc后台接收文件的方法
我每次点上传文件都会报下面的错误
严重: Servlet.service() for servlet [springmvc] in context with path [/ZTEDocumentServers] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly] with root cause
org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:982)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
at java.io.InputStream.read(InputStream.java:101)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:366)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:158)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142)
at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1073)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:912)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
是哪边写的有问题吗
...全文
431 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35153827 2017-12-09
  • 打赏
  • 举报
回复
楼组问题解决了吗
Harry0073 2016-05-18
  • 打赏
  • 举报
回复
我们上传图片的,你可以参照下,把图片换成文件 public class HttpPostFile { public static boolean postFile(File file, String url) throws ClientProtocolException, IOException { FileBody bin = null; HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); if (file != null) { bin = new FileBody(file); } // 请记住,这边传递汉字会出现乱码,解决方法如下,设置好编码格式就好 // new StringBody("汉字",Charset.forName("UTF-8"))); StringBody username = new StringBody(""); StringBody password = new StringBody(""); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("username", username); reqEntity.addPart("password", password); reqEntity.addPart("data", bin); httppost.setEntity(reqEntity); HttpResponse response = httpclient.execute(httppost); if (response.getStatusLine().getStatusCode() == 200) { return true; } else { return false; } } public static void main(String[] args) throws ClientProtocolException, IOException { File file = new File("d:/1.png"); String url = "http://localhost/WeiXinSpring/servlet/DevOpsService?cmd=PtCheckExcelUploadCmd"; System.out.println(postFile(file,url)); } }
silenze 2016-05-16
  • 打赏
  • 举报
回复
文件没传上去
student-ai 2016-04-18
  • 打赏
  • 举报
回复
http://blog.csdn.net/wolaizhaomengxiang/article/details/22721779 参考上面的, 你那个报错,可能是超时引起的。

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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