//服务器客户端都记得导包
//客户端用post请求.
//服务器用dopost方法.
public static String sendDataByHttpClientPost(String path , String name,String password ,String filepath) throws Exception{ // 实例化上传数据的 数组 part [] Part[] parts = {new StringPart("name", name), new StringPart("password", password), new FilePart("file", new File(filepath))}; //得到filepost请求 PostMethod filePost = new PostMethod(path); //设置实体 filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams())); //得到client. org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient(); client.getHttpConnectionManager().getParams() .setConnectionTimeout(5000);
// 发送数据. int status = client.executeMethod(filePost); if(status==200){ System.out.println( filePost.getResponseCharSet()); //得到返回的数据 String result = new String(filePost.getResponseBodyAsString()); //将返回的数据转经过转码后的到. String ha = new String ( result.getBytes("ISO-8859-1"),"UTF-8"); System.out.println(ha); System.out.println("--"+result); return result; } else{ throw new IllegalStateException("服务器状态异常"); } }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //doGet(request, response); // 判断请求中是否包含文件. 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(); //得到文件条目工厂factory FileItemFactory factory = new DiskFileItemFactory(); //将工厂塞给文件上传类. ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); try { //非常重要...文件上传类的到请求.为list集合. List<FileItem> 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{ //若果是文件类型,就把文件写到我的目录下. //System.currentTimeMillis()+ item.getName().substring(item.getName().lastIndexOf("."))为文件的名字 //substring(item.getName().lastIndexOf(".")截取.后面的东西,如 时间.jpg. item.write(new File(dir, System.currentTimeMillis()+ item.getName().substring(item.getName().lastIndexOf(".")))); } } response.getOutputStream().write("你好".getBytes("iso-8859-1")); } catch (Exception e) { e.printStackTrace(); } }else{ doGet(request, response); } }