做个了上传和提交数据的测试,遇到点问题,如果只加 string类型的参数,server端接受到参数没问题,如果加上file类型的,server端servlet 接受到参数都为空了。
代码如下
FinalHttp fh = new FinalHttp();
AjaxParams params = new AjaxParams();params.put("action", "test");
params.put("username", "aaaaa");
try {
params.put("file",new File("/mnt/sdcard/1.jpg"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fh.post(serverUrl,params, new AjaxCallBack<Object>() {
@Override
public void onLoading(long count, long current) {
super.onLoading(count, current);
}
@Override
public void onSuccess(Object t) {
// TODO Auto-generated method stub
logger.info("返回信息是+"+ t.toString());
}
});
如果上传文件的话,afinal是以了multipart request的形式提交到服务器。
1、如果没有文件上传的话:
直接使用:
就可以接受到传来的值了。2、如果有文件上传,afinal使用了multipart request的形式提交到服务器。这里给传出了接收数据的方法(下面是一个普通的servlet类的dopost方法,其他语言自行参考):
这里使用到了apache的FileUpload库:网址http://commons.apache.org/fileupload/
希望,能对你有帮助。
手机上传大文件报错,应该怎么处理?Afinal最大支持多大文件上传?希望大神帮忙,出错代码:
引用来自“michaely”的答案
multipart request形式提交给服务器后,数据如下:servlet的request接收到的数据如下:
michaely大神,怎么方便的获得普通的参数,非多媒体提交的时候可以直接
而通过mutipart request的时候怎么获得普通的parameter呢?难道要item.getFieldName()依次比较是否是username这个字符串?然后如果是就item.getInputStream()赋值。这样很不爽吧?怎么说也不是去直接找username来的直接。下边是我测试的上传的内容普通字段加一个文件,DiskFileItems中的信息: 望指点更优的方法。