使用okhttp上传文件---单文件或多文件

来源:互联网 发布:淘宝网皮夹克 编辑:程序博客网 时间:2024/06/02 02:19

资源链接:http://download.csdn.net/detail/baidu_24278081/9820885


服务器端代码---使用spring mvc

@RequestMapping("addPicture")
public void addPicture(HttpSession session,HttpServletRequest request,HttpServletResponse response){
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json;charset=utf-8");
PrintWriter printWriter = null;
try {
printWriter = response.getWriter();
long startTime=System.currentTimeMillis();
//将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
request.getSession().getServletContext());
//检查form中是否有enctype="multipart/form-data"
if(multipartResolver.isMultipart(request)){
//将request变成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;

//获取multiRequest 中所有的文件名
Iterator iter=multiRequest.getFileNames();
int i = 0;
while(iter.hasNext())
{
//一次遍历所有文件
MultipartFile file=multiRequest.getFile(iter.next().toString());
System.out.println(i++);
if(file!=null){
String fileName = file.getOriginalFilename();

//获取picture文件夹路径 
String path = session.getServletContext().getRealPath("picture");


//上传 到指定路径
new File(path).mkdirs();
file.transferTo(new File(path+"/"+fileName));
}
}

printWriter.print(1);
printWriter.flush();
}else{
printWriter.print(0);
printWriter.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if (printWriter!=null) {
printWriter.close();
}
}
}



android端代码:

MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);for (int i = 0; i <selected.size() ; i++) {   File f=new File(selected.get(i).getOriginalPath());   if (f!=null) {      Toast.makeText(PhotoSelectorActivity.this, ":"+selected.get(i).getOriginalPath(), Toast.LENGTH_SHORT).show();//添加文件      builder.addFormDataPart(f.getName(), f.getName(), RequestBody.create(MEDIA_TYPE_PNG, f));   }}//添加普通数据builder.addFormDataPart("time","demo");MultipartBody requestBody = builder.build();Request request = new Request.Builder()      .url("http://ip:端口/项目名/addPicture.do")      .post(requestBody)      .build();client.newCall(request).enqueue(new Callback() {   @Override   public void onFailure(Call call, IOException e) {      Log.e("musiclistpulldown", "failure");   }   @Override   public void onResponse(Call call, Response response) throws IOException {      Message msg = handler.obtainMessage();      msg.what = 1;      handler.sendMessage(msg);   }});



问题:

//添加文件builder.addFormDataPart(f.getName(), f.getName(), RequestBody.create(MEDIA_TYPE_PNG, f));
其中第一个参数   f.getName  可以取相同值吗?我这里测试取相同值时,只上传了第一张图片

eg:

//添加文件builder.addFormDataPart(“file”, f.getName(), RequestBody.create(MEDIA_TYPE_PNG, f));

0 0
原创粉丝点击