资源链接:http://download.youkuaiyun.com/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));