提交 ea99ebfa authored 作者: zhangshuang's avatar zhangshuang

代码优化

上级 032f0c5b
package com.zjty.ftp.service.impl; package com.zjty.ftp.service.impl;
import com.zjty.ftp.service.FileDownLoadService; import com.zjty.ftp.service.FileDownLoadService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -10,6 +11,7 @@ import java.io.*; ...@@ -10,6 +11,7 @@ import java.io.*;
import java.util.List; import java.util.List;
@Service @Service
@Slf4j
public class FileDownLoadServiceImpl implements FileDownLoadService { public class FileDownLoadServiceImpl implements FileDownLoadService {
@Value("${file.address}") @Value("${file.address}")
...@@ -26,43 +28,49 @@ public class FileDownLoadServiceImpl implements FileDownLoadService { ...@@ -26,43 +28,49 @@ public class FileDownLoadServiceImpl implements FileDownLoadService {
e.printStackTrace(); e.printStackTrace();
} }
File sourceFile = new File(fileAddress); File sourceFile = new File(fileAddress);
boolean fileExist = false;
File[] files = sourceFile.listFiles(); File[] files = sourceFile.listFiles();
if(files != null && files.length != 0){ if(files != null && files.length != 0){
for (File f:files){ for (File f:files){
if (f.getName().startsWith(fileName)){ if (f.getName().startsWith(fileName)){
fileName = f.getName(); fileName = f.getName();
fileExist = true;
break; break;
} }
} }
} }
File file = new File(fileAddress + "/" + fileName); if(fileExist){
setFileDownloadHeader(httpServletRequest,response,fileName); File file = new File(fileAddress + "/" + fileName);
OutputStream os = null; setFileDownloadHeader(httpServletRequest,response,fileName);
InputStream is = null; OutputStream os = null;
BufferedInputStream bs = null; InputStream is = null;
byte[] buffer = new byte[1024]; BufferedInputStream bs = null;
try { byte[] buffer = new byte[1024];
is = new FileInputStream(file);
bs = new BufferedInputStream(is);
os = response.getOutputStream();
int i = bs.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bs.read(buffer);
}
os.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try { try {
bs.close(); is = new FileInputStream(file);
is.close(); bs = new BufferedInputStream(is);
os.close(); os = response.getOutputStream();
int i = bs.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bs.read(buffer);
}
os.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} finally {
try {
bs.close();
is.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
} }
}else {
log.info("该文件不存在");
} }
} }
} }
......
...@@ -3,6 +3,7 @@ package com.zjty.ftp.service.impl; ...@@ -3,6 +3,7 @@ package com.zjty.ftp.service.impl;
import com.zjty.ftp.service.FileUploadService; import com.zjty.ftp.service.FileUploadService;
import com.zjty.ftp.base.response.ServerResponse; import com.zjty.ftp.base.response.ServerResponse;
import com.zjty.ftp.entity.FileReturn; import com.zjty.ftp.entity.FileReturn;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -15,6 +16,7 @@ import java.util.List; ...@@ -15,6 +16,7 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
@Service @Service
@Slf4j
public class FileUploadServiceImpl implements FileUploadService { public class FileUploadServiceImpl implements FileUploadService {
@Value("${file.address}") @Value("${file.address}")
...@@ -29,47 +31,53 @@ public class FileUploadServiceImpl implements FileUploadService { ...@@ -29,47 +31,53 @@ public class FileUploadServiceImpl implements FileUploadService {
public ServerResponse fileUpload(HttpServletRequest request) { public ServerResponse fileUpload(HttpServletRequest request) {
List<MultipartFile> multipartFiles = ((MultipartHttpServletRequest)request).getFiles("file"); List<MultipartFile> multipartFiles = ((MultipartHttpServletRequest)request).getFiles("file");
List<FileReturn> fileReturns = new ArrayList<>(); List<FileReturn> fileReturns = new ArrayList<>();
for(MultipartFile multipartFile:multipartFiles){ if(multipartFiles != null && multipartFiles.size() != 0){
InputStream is = null; for(MultipartFile multipartFile:multipartFiles){
BufferedInputStream bis = null; InputStream is = null;
FileOutputStream fos = null; BufferedInputStream bis = null;
BufferedOutputStream bos = null; FileOutputStream fos = null;
FileReturn fileReturn = new FileReturn(); BufferedOutputStream bos = null;
String sourceName = multipartFile.getOriginalFilename(); FileReturn fileReturn = new FileReturn();
//String suffix = sourceName.substring(sourceName.lastIndexOf(".")); String sourceName = multipartFile.getOriginalFilename();
//String fileName = UUID.randomUUID().toString() + suffix; //String suffix = sourceName.substring(sourceName.lastIndexOf("."));
//不存在该目录,创建目录 //String fileName = UUID.randomUUID().toString() + suffix;
File file = new File(fileAddress); //不存在该目录,创建目录
if(!file.exists()){ File file = new File(fileAddress);
file.mkdirs(); if(!file.exists()){
} file.mkdirs();
String savePath = file.getAbsolutePath() + "/" + sourceName;
fileReturn.setName(sourceName);
fileReturn.setPath(savePath);
fileReturns.add(fileReturn);
File createFile = new File(savePath);
try {
is = multipartFile.getInputStream();
bis = new BufferedInputStream(is);
fos = new FileOutputStream(createFile);
bos = new BufferedOutputStream(fos);
int len = -1;
byte[] b = new byte[1024];
while ((len = bis.read(b)) != -1){
bos.write(b,0,len);
} }
} catch (IOException e) { String savePath = file.getAbsolutePath() + "/" + sourceName;
e.printStackTrace(); File createFile = new File(savePath);
}finally {
try { try {
bis.close(); is = multipartFile.getInputStream();
is.close(); bis = new BufferedInputStream(is);
bos.close(); fos = new FileOutputStream(createFile);
fos.close(); bos = new BufferedOutputStream(fos);
} catch (Exception e) { int len = -1;
byte[] b = new byte[1024];
while ((len = bis.read(b)) != -1){
bos.write(b,0,len);
}
fileReturn.setName(sourceName);
//fileReturn.setPath(savePath);
fileReturns.add(fileReturn);
} catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
continue;
}finally {
try {
bis.close();
is.close();
bos.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
} }
}else {
log.info("上传失败,请重新确定key值,重新上传");
return ServerResponse.error("上传失败,请重新确定key值,重新上传");
} }
return ServerResponse.success(fileReturns); return ServerResponse.success(fileReturns);
} }
......
...@@ -5,3 +5,6 @@ spring.servlet.multipart.max-file-size=200MB ...@@ -5,3 +5,6 @@ spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=200MB spring.servlet.multipart.max-request-size=200MB
file.address=/file/uploads file.address=/file/uploads
#日志文件
logging.file.path=./log/ds.log
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论