1949啦网--小小 痛苦,是因为能力和欲望不匹配造成的

java文件传输接口

开发的时候碰到这样的需求:需要在一个系统(客户端发送请求)中将文件传输至另外一个系统(服务端接收)中去的实现方式,可以批量传输文件,代码如下:

客户端请求:

public String upLoadFilePost(String actionUrl, Map<String, File> files) throws IOException {          String BOUNDARY = java.util.UUID.randomUUID().toString();          String PREFIX = "--", LINEND = "\r\n";          String MULTIPART_FROM_DATA = "multipart/form-data";          String CHARSET = "UTF-8";          URL uri = new URL(actionUrl);          HttpURLConnection conn = (HttpURLConnection) uri.openConnection();          conn.setReadTimeout(5 * 1000);          conn.setDoInput(true);// 允许输入          conn.setDoOutput(true);// 允许输出          conn.setUseCaches(false);          conn.setRequestMethod("POST"); // Post方式          conn.setRequestProperty("connection", "keep-alive");          conn.setRequestProperty("Charsert", "UTF-8");          conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA                  + ";boundary=" + BOUNDARY);            DataOutputStream outStream = new DataOutputStream(                  conn.getOutputStream());          // 发送文件数据          if (files != null)              for (Map.Entry<String, File> file : files.entrySet()) {                  StringBuilder sb1 = new StringBuilder();                  sb1.append(PREFIX);                  sb1.append(BOUNDARY);                  sb1.append(LINEND);                  sb1.append("Content-Disposition: form-data; name=\"file\"; filename=\""                          + file.getKey() + "\"" + LINEND);                  sb1.append("Content-Type: application/octet-stream; charset="                          + CHARSET + LINEND);                  sb1.append(LINEND);                  outStream.write(sb1.toString().getBytes());                  InputStream is = new FileInputStream(file.getValue());                  byte[] buffer = new byte[1024];                  int len = 0;                  while ((len = is.read(buffer)) != -1) {                      outStream.write(buffer, 0, len);                  }                    is.close();                  outStream.write(LINEND.getBytes());              }            // 请求结束标志          byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();          outStream.write(end_data);          outStream.flush();            // 得到响应码          int res = conn.getResponseCode();          if (res == 200) {              InputStream in = conn.getInputStream();              InputStreamReader isReader = new InputStreamReader(in);              BufferedReader bufReader = new BufferedReader(isReader);              String line = "";              String data = "";              while ((line = bufReader.readLine()) != null) {                  data += line;              }              outStream.close();              conn.disconnect();              return data;          }          outStream.close();          conn.disconnect();          return null;      }

服务端接收接口方法体:

public String fileInteraction(HttpServletRequest request, HttpServletResponse response) throws Exception {          //操作成功则返回OK          String result = "";          MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;           //解析request,将结果放置在list中          Map<String, List<MultipartFile>> fileMap = multiRequest.getMultiFileMap();          for (String key : fileMap.keySet()) {              List<MultipartFile> files = fileMap.get(key);              for (MultipartFile file : files) {                  if (!file.isEmpty()) {                      String fileNamePath = file.getOriginalFilename();                      String[] params = fileNamePath.split("\\.");                      String filename = "";                      int i = 0;                      for (String str : params) {                          i = i + 1;                          if (StringUtils.isNotEmpty(filename)) {                              if (i==params.length) {                                  filename = filename + "." + str;                              }else{                                  filename = filename + "/" + str;                              }                          }else{                              filename = str;                          }                      }                       // 文件保存路径                         String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/wxfile/" + filename;                       File iFile = new File(filePath);                       File iFileParent = iFile.getParentFile();                       if(!iFileParent.exists()){                           iFileParent.mkdirs();                       }                       // 转存文件                         file.transferTo(new File(filePath));                       result = "ok";                   }              }          }          return result;      }

调用客户端调用发送请求方法:

String actionUrl = "http://shuilangyizu.iask.in/liuf/utilController/fileInteraction.do";          Map<String, File> files = new HashMap<String, File>();          File file = new File(request.getSession().getServletContext().getRealPath("/") + "upload/temp/1.doc");          files.put("x."+file.getName(), file);          File file2 = new File(request.getSession().getServletContext().getRealPath("/") + "upload/temp/1.jpg");          files.put("y."+file2.getName(), file2);          String result = utilService.upLoadFilePost(actionUrl, files);

原文链接:https://www.qiquanji.com/post/8312.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

作者:xialibing 分类:网页教程 浏览: