合并分割后的小文件 @ApiOperation(value = "合并下载文件", notes = "合并下载文件", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = "/mergePartFiles", method = RequestMethod.GET) pu
@ApiOperation(value = "合并下载文件", notes = "合并下载文件", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = "/mergePartFiles", method = RequestMethod.GET) public void mergePartFiles(HttpServletResponse response, String fileName){ Token token = ConcurrentHashMapUtil.getToken(osv3Params.getToken()); if (StringUtils.isEmpty(token)){ //手动认证 AuthenticateHandler.start(osv3Params); token = ConcurrentHashMapUtil.getToken(osv3Params.getToken()); } try { //创建临时文件 File tempFile = File.createTempFile(fileName, null); OSClient.OSClientV3 clientV3 = OSFactory.clientFromToken(token); List list = clientV3.objectStorage().objects().list("part"); //创建输出流。 BufferedOutputStream bosFinal= new BufferedOutputStream( new FileOutputStream(tempFile)); //构建流集合。 Vectorvector = new Vector (); //int d=0; for (int i = 0; i < list.size(); i++) { // d = d+i*d; DLPayload dlPayload = clientV3.objectStorage().objects().download("part", list.get(i).getName()); InputStream inputStream = dlPayload.getInputStream(); vector.addElement(inputStream); } Enumeration e = vector.elements(); //创建一个合并流的对象 SequenceInputStream sis = new SequenceInputStream(e); //读写数据 byte[] buf = new byte[1024]; int len = 0; //6.通过response对象获取OutputStream流 OutputStream out = response.getOutputStream(); response.setHeader("content-type", "text/html;charset=UTF-8"); response.setHeader("content-disposition", "attachment;filename="+fileName); while ((len = sis.read(buf)) != -1) { //8.使用OutputStream将缓冲区的数据输出到客户端浏览器 out.write(buf,0,len); } } catch (IOException e) { e.printStackTrace(); } }