本处使用的是Httpclient4.0.1
客户端:
public static int postXml(String path,String url){
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
MultipartEntity multipartEntity = new MultipartEntity();
FileBody cbFileBody = new FileBody(new File(path));
multipartEntity.addPart("file", cbFileBody);
post.setEntity(multipartEntity);
int statusCode = -1;
try {
HttpResponse response = client.execute(post);
statusCode = response.getStatusLine().getStatusCode();
} catch (Throwable e) {
//记录异常日志
SolrErrorCategory.error("xml文件post到solr服务器:"+url+" 创建索引出现异常错误!异常信息:"+e.getMessage(),e);
}
return statusCode;
}
服务端:
@RequestMapping(value="upload",method=RequestMethod.POST)
public void upload(HttpServletRequest request,
HttpServletResponse response){
try{
long start = System.currentTimeMillis();
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判断 request 是否有文件上传,即多部分请求
if(multipartResolver.isMultipart(request)){
//转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
//取得上传文件
MultipartFile file = multiRequest.getFile(iter.next());
if(file != null){
File localFile = new File("D:\\"+file.getOriginalFilename());
file.transferTo(localFile);
}
//记录上传该文件后的时间
String spent = PerformanceUtil.spentTime(start);
}
}
}catch(Throwable e){
log.error("接收solrcloud的XML文件失败,失败原因:",e);
}
}