fastdfs图片下载\FTP视频多文件下载

@ApiOperation("附件下载")
	@RequestMapping(value = "/download")
	@ResponseBody
	public  void downloadFile(HttpServletResponse response,String ticketNumber) throws Exception {
		ticketNumber="KSS20200608101218185";
		String video="";
		String soundRecords="";
		String pic="";
		String pic1="['picture/M00/01/D9/rBQhUV7WG6qAbRI8ADCuc70u6DA362.jpg','picture/M00/01/D9/rBQhUV7WG6qAbRI8ADCuc70u6DA362.jpg']";
		ArrayList<String> PictureList = new ArrayList<>();
		ArrayList<String> SoundRecordingList = new ArrayList<>();
		ArrayList<String> VideoList = new ArrayList<>();
		ArrayList<String> AllList = new ArrayList<>();


		TicketComplaintAgentMaterial material = ticketCustomerComplaintService.selectEntity(ticketNumber);
		if (StringUtils.isNotEmpty(material.getPictures())){
			pic=material.getPictures();
		}
		if(StringUtils.isNotEmpty(material.getVideos())){
			 video=material.getVideos();
		}
		if(StringUtils.isNotEmpty(material.getSoundRecording())){
			soundRecords=material.getSoundRecording();
		}




		if(StringUtils.isNotEmpty(pic1)){
			JSONArray array = JSON.parseArray(pic1);
			for (Object o : array) {
				String transferUrl = PicUtil.transfer(String.valueOf(o));
				PictureList.add(transferUrl);
			}
		}
//		if(StringUtils.isNotEmpty(video)){
//			JSONArray array = JSON.parseArray(video);
//			for (Object o : array) {
//				VideoList.add(String.valueOf(o));
//			}
//		}
//		if(StringUtils.isNotEmpty(soundRecords)){
//			JSONArray array = JSON.parseArray(soundRecords);
//			for (Object o : array) {
//				SoundRecordingList.add(String.valueOf(o));
//			}
//		}
		VideoList.add("/public_baseweb/ticket/attachments/75521e9c-fe31-4acc-aea3-6c3c58014f73.mp4");
		VideoList.add("/public_baseweb/ticket/attachments/ae888b01-5daa-43cd-8129-2940ea52676a.MP4");
		VideoList.add("/public_baseweb/ticket/attachments/be9d3e70-3bcb-4068-8f02-58fa362fb9b2.MP4");
		List<String> VideoListNew = VideoList.stream().distinct().collect(Collectors.toList());
		List<String> SoundRecordingListNew = SoundRecordingList.stream().distinct().collect(Collectors.toList());
		List<String> PictureListNew = PictureList.stream().distinct().collect(Collectors.toList());

		AllList.addAll(VideoListNew);
		AllList.addAll(SoundRecordingListNew);
  try {



		//读取视频、音频  ftp多文件下载
		LOGGER.info("读取视频和音频,文件集合"+AllList.size());
		if (AllList.size()>0) {
			for (String svp : AllList) {
				FTPClient ftpClient = getFTPClient(host, username, passwd, port);
				ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
				int replyCode = ftpClient.getReplyCode();
				if (!FTPReply.isPositiveCompletion(replyCode)) {
					ftpClient.disconnect();

				}
				ftpClient.enterLocalActiveMode();
				ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
				ftpClient.changeWorkingDirectory(path);// 转移到FTP服务器目录
				ftpClient.setControlEncoding("UTF-8"); // 中文支持
				ftpClient.enterLocalActiveMode();
				InputStream inputStream=null;
				OutputStream outputStream=null;


				String source = new String((svp).getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
				FTPFile[] files = ftpClient.listFiles(source);
				if (files != null) {
					if (files.length == 1) {
						String filepath="D:\\cxl";
						File file1=new File(filepath);
						if(!file1.isDirectory()){
							file1.mkdirs();

						}

						 inputStream = ftpClient.retrieveFileStream(source);
						 String filename = svp.substring(svp.lastIndexOf("/") + 1);
						  File file=new File("D:\\cxl\\"+filename);

						  if (!file.exists()){
							  file.createNewFile();
						  }
						FileOutputStream fos = new FileOutputStream(file);
						int len = 0;
						byte[] buffer = new byte[1024];
						while ((len = inputStream.read(buffer)) > 0) {
							//将缓冲区的数据输出到客户端浏览器
							fos.write(buffer,0,len);
						}
						inputStream.close();
						fos.close();

					}
				}
				ftpClient.completePendingCommand();
				ftpClient.logout();
				ftpClient.disconnect();
			}
		}
		//读取图片  fastdfs图片下载
		if (PictureListNew.size()>0){
			for (String picurl : PictureListNew) {
				String filename = picurl.substring(picurl.lastIndexOf("/")+1);
				String filepath="D:\\cxl";
				File file1=new File(filepath);
				if(!file1.isDirectory()){
					file1.mkdirs();

				}
				File file=new File(filepath+"\\"+filename);
				if (!file.exists()){
					file.createNewFile();
				}
				FileOutputStream fos = new FileOutputStream(file);
				URL url = new URL(picurl);
				DataInputStream dataInputStream = new DataInputStream(url.openStream());

				ByteArrayOutputStream output = new ByteArrayOutputStream();

				byte[] buffer = new byte[1024];
				int length=0;

				while ((length = dataInputStream.read(buffer)) > 0) {
					output.write(buffer, 0, length);
				}
				fos.write(output.toByteArray());
				dataInputStream.close();
				fos.close();

			}

		}
		

			String filepath="D:\\cxl";
			File file = new File(filepath);//File类型可以是文件也可以是文件夹
			File[] fileList = file.listFiles();//将该目录下的所有文件放置在一个File类型的数组中

			//FileOutputStream fos = new FileOutputStream(file);
			File zipfile=new File("D:\\cxl\\kesugongdan.zip");
			if (!zipfile.exists()){
				zipfile.createNewFile();
			}
			ZipUtilNew.zipFiles(fileList, zipfile);
			ZipUtilNew.zipFilesdel(fileList);
			InputStream fis = new BufferedInputStream(new FileInputStream(zipfile));
			  byte[] buffer = new byte[fis.available()];
			  fis.read(buffer);
			  fis.close();
			 response.reset();
			 response.setHeader("Content-Disposition", "attachment;filename=kesugongdan.zip");
			 response.setCharacterEncoding("UTF-8");
			 response.setContentType("application/octet-stream");

			OutputStream toClient = new BufferedOutputStream(response.getOutputStream());

			toClient.write(buffer);
			toClient.flush();
			toClient.close();
			zipfile.delete();

  }catch (Exception e){
  	e.printStackTrace();
  }finally {
	  String filepath="D:\\cxl";
	  File file = new File(filepath);//File类型可以是文件也可以是文件夹
	  File[] fileList = file.listFiles();//将该目录下的所有文件放置在一个File类型的数组中
	  ZipUtilNew.zipFilesdel(fileList);
	  File zipfile=new File("D:\\cxl\\kesugongdan.zip");
	  zipfile.delete();
  }

}


package com.shuabao.agent.risk.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;


public class ZipUtilNew {



	public static void zipFiles(File[] srcfile,File zipfile){
		byte[] buf=new byte[1024];
		try {
			//ZipOutputStream类:完成文件或文件夹的压缩
			ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipfile));
			for(int i=0;i<srcfile.length;i++){
				FileInputStream in=new FileInputStream(srcfile[i]);
				out.putNextEntry(new ZipEntry(srcfile[i].getName()));
				int len;
				while((len=in.read(buf))>0){
					out.write(buf,0,len);
				}
				out.closeEntry();
				in.close();
			}
			out.close();
			System.out.println("压缩完成.");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

    public static void zipFilesdel(File[] srcfile){

            for(int i=0;i<srcfile.length;i++){
                File file = srcfile[i];

                int lastIndexOf = file.getName().lastIndexOf(".");
                //获取文件的后缀名 .jpg
                String suffix = file.getName().substring(lastIndexOf);
                if(!suffix.equals("zip")){
                    file.delete();
                }

            }



    }

    public static void main(String[] args) {
        File f1=new File("D:\\down\\abc.txt");
        File f2=new File("D:\\down\\def.txt");
        File[] srcfile={f1,f2};
        File zipfile=new File("D:\\down\\xjq.zip");
        zipFiles(srcfile,zipfile);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值