首页 > 代码库 > java后端模拟表单提交

java后端模拟表单提交

代码可实现文本域及非文本域的处理

请求代码:

/**      * 上传     *       * @param urlStr      * @param textMap      * @param fileMap      * @return      */      public static String formUpload(String urlStr, Map<String, String> textMap,              Map<String, String> fileMap) {          String res = "";          HttpURLConnection conn = null;          String BOUNDARY = "---------------------------123821742118716"; //boundary就是request头和上传文件内容的分隔符          try {              URL url = new URL(urlStr);              conn = (HttpURLConnection) url.openConnection();              conn.setConnectTimeout(5000);              conn.setReadTimeout(30000);              conn.setDoOutput(true);              conn.setDoInput(true);              conn.setUseCaches(false);              conn.setRequestMethod("POST");              conn.setRequestProperty("Connection", "Keep-Alive");              conn                      .setRequestProperty("User-Agent",                              "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)");              conn.setRequestProperty("Content-Type",                      "multipart/form-data; boundary=" + BOUNDARY);                OutputStream out = new DataOutputStream(conn.getOutputStream());              // text              if (textMap != null) {                  StringBuffer strBuf = new StringBuffer();                  Iterator iter = textMap.entrySet().iterator();                  while (iter.hasNext()) {                      Map.Entry entry = (Map.Entry) iter.next();                      String inputName = (String) entry.getKey();                      String inputValue = http://www.mamicode.com/(String) entry.getValue();  "\r\n").append("--").append(BOUNDARY).append(                              "\r\n");                      strBuf.append("Content-Disposition: form-data; name=\""                              + inputName + "\"\r\n\r\n");                      strBuf.append(inputValue);                  }                  out.write(strBuf.toString().getBytes());              }                // file              if (fileMap != null) {                  Iterator iter = fileMap.entrySet().iterator();                  while (iter.hasNext()) {                      Map.Entry entry = (Map.Entry) iter.next();                      String inputName = (String) entry.getKey();                      String inputValue = http://www.mamicode.com/(String) entry.getValue();  ".png")) {                          contentType = "image/png";                      }                      if (contentType == null || contentType.equals("")) {                          contentType = "application/octet-stream";                      }                        StringBuffer strBuf = new StringBuffer();                      strBuf.append("\r\n").append("--").append(BOUNDARY).append(                              "\r\n");                      strBuf.append("Content-Disposition: form-data; name=\""                              + inputName + "\"; filename=\"" + filename                              + "\"\r\n");                      strBuf.append("Content-Type:" + contentType + "\r\n\r\n");                        out.write(strBuf.toString().getBytes());                        DataInputStream in = new DataInputStream(                              new FileInputStream(file));                      int bytes = 0;                      byte[] bufferOut = new byte[1024];                      while ((bytes = in.read(bufferOut)) != -1) {                          out.write(bufferOut, 0, bytes);                      }                      in.close();                  }              }                byte[] endData = http://www.mamicode.com/("\r\n--" + BOUNDARY + "--\r\n").getBytes();              out.write(endData);              out.flush();              out.close();                // 读取返回数据              StringBuffer strBuf = new StringBuffer();              BufferedReader reader = new BufferedReader(new InputStreamReader(                      conn.getInputStream()));              String line = null;              while ((line = reader.readLine()) != null) {                  strBuf.append(line).append("\n");              }              res = strBuf.toString();              reader.close();              reader = null;          } catch (Exception e) {              System.out.println("发送POST请求出错。" + urlStr);              e.printStackTrace();          } finally {              if (conn != null) {                  conn.disconnect();                  conn = null;              }          }          return res;      }

  处理上传请求代码:

/**	 * 上传	 * @param request	 * @param response	 * @throws Exception	 */	public void doUpload(HttpServletRequest request, HttpServletResponse response)throws Exception {		String jsession = request.getParameter("jsessionid");		System.out.println(jsession);		HttpSession s = request.getSession();		System.out.println(s.getId());		DiskFileItemFactory factory = new DiskFileItemFactory();		// 设置内存缓冲区,超过后写入临时文件		factory.setSizeThreshold(10240000); 		ServletFileUpload upload = new ServletFileUpload(factory);		// 设置单个文件的最大上传值		upload.setFileSizeMax(10002400000l);		// 设置整个request的最大值		upload.setSizeMax(10002400000l);		upload.setHeaderEncoding("UTF-8");		//Date now = new Date();		Map map = new HashMap();		File tmpFile = new File(tmpFilePath);		if(!tmpFile.exists())			tmpFile.mkdirs();		List items = null;		try {			items = upload.parseRequest(request);		} catch (FileUploadException e) {			throw new RuntimeException(e);		}		if (items == null)			return ;		Date date = new Date();		Iterator iter = items.iterator();		String fileName = tmpFilePath + File.separator +date.getTime();		while (iter.hasNext()) {// 循环获得每个表单项			FileItem item = (FileItem) iter.next();			if (item.isFormField()) {				String name = item.getFieldName();				try {					String value = http://www.mamicode.com/item.getString("utf-8");// 如果参数里面有中文,防止出现乱码					map.put(name, value);				} catch (UnsupportedEncodingException e) {					// TODO Auto-generated catch block					e.printStackTrace();				}			}else if(item.getName().length() > 0) {				String namefix = item.getName();				namefix = namefix.substring(namefix.lastIndexOf("."));				fileName = fileName +namefix;				item.write(new File(fileName));			}		}		String type =(String) map.get("type");		if(type.equals("war")){			request.getSession().setAttribute("warFileName",fileName);		}else if(type.equals("sql")){			request.getSession().setAttribute("sqlFileName",fileName);		}		try {			map.put("data", fileName);			response.getWriter().write(JsonUtils.convertToString(map));		} catch (IOException e) {			e.printStackTrace();		}	}

  测试调用代码:

/**      * @param args      */      public static void main(String[] args) {                    String filepath="D:\\test\\PPGhost.war";                    String urlStr = "http://localhost:8080/iopm/version/add.do?method=upload";                    Map<String, String> textMap = new HashMap<String, String>();                textMap.put("name", "testname");          textMap.put("type", "war");            Map<String, String> fileMap = new HashMap<String, String>();                    fileMap.put("userfile", filepath);                    String ret = formUpload(urlStr, textMap, fileMap);                    System.out.println(ret);                  }

  

java后端模拟表单提交