@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);
}
}
fastdfs图片下载\FTP视频多文件下载
最新推荐文章于 2022-11-24 21:57:26 发布