怎么发文件到服务器异常,大神帮我看看,我用async-http框架上传文件到服务器发生异常...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

用表单提交时是正常的

客户端代码:

String path=et_path.getText().toString().trim();

File file=new File(path);

if(file.exists()&&file.length()>0){

AsyncHttpClient client = new AsyncHttpClient();

RequestParams params=new RequestParams();

try {

params.put("picture", file);

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

client.post("http://192.168.0.102:8080/upload/servlet/UploadServlet", params, new AsyncHttpResponseHandler(){

@Override

public void onFailure(int arg0, Header[] arg1, byte[] arg2,

Throwable arg3) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, "上传失败", Toast.LENGTH_SHORT).show();

}

@Override

public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, "上传成功", Toast.LENGTH_SHORT).show();

}

});

}else{

Toast.makeText(this, "文件不存在或文件为空", Toast.LENGTH_SHORT).show();

}

服务端代码:

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

if (isMultipart) {

String realpath = request.getSession().getServletContext()

.getRealPath("/files");

System.out.println(realpath);

File dir = new File(realpath);

if (!dir.exists())

dir.mkdirs();

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setHeaderEncoding("UTF-8");

try {

List items = upload.parseRequest(request);

for (FileItem item : items) {

if (item.isFormField()) {

String name1 = item.getFieldName();// 得到请求参数的名称

String value = item.getString("UTF-8");// 得到参数值

System.out.println(name1 + "=" + value);

} else {

item.write(new File(dir, System.currentTimeMillis()

+ item.getName().substring(

item.getName().lastIndexOf("."))));

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

发生的异常:

org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly

at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:371)

at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)

at UploadServlet.doGet(UploadServlet.java:46)

at UploadServlet.doPost(UploadServlet.java:77)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

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:505)

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:957)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:619)

Caused by: 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:85)

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)

... 22 more

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值