文件的上传的部分源代码.

//服务器客户端都记得导包

//客户端用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);
		}
		
	}




你可能感兴趣的:(文件的上传的部分源代码.)