|
|
@ -85,6 +85,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
// 上传文件 |
|
|
// 上传文件 |
|
|
Date date = new Date(); |
|
|
Date date = new Date(); |
|
|
for (MultipartFile file : files) { |
|
|
for (MultipartFile file : files) { |
|
|
|
|
|
SysOssEntity uploadEntity = new SysOssEntity(); |
|
|
String fileName = file.getOriginalFilename(); |
|
|
String fileName = file.getOriginalFilename(); |
|
|
if (StringUtils.isEmpty(fileName)) { |
|
|
if (StringUtils.isEmpty(fileName)) { |
|
|
throw new IllegalArgumentException("文件名不能为空"); |
|
|
throw new IllegalArgumentException("文件名不能为空"); |
|
|
@ -103,20 +104,29 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
fileDir.mkdirs(); |
|
|
fileDir.mkdirs(); |
|
|
} |
|
|
} |
|
|
// 保存文件 |
|
|
// 保存文件 |
|
|
File targetFile = new File(path, fileName); |
|
|
|
|
|
|
|
|
File targetFile = new File(path, newFileName); |
|
|
try { |
|
|
try { |
|
|
file.transferTo(targetFile); |
|
|
file.transferTo(targetFile); |
|
|
} catch (IOException e) { |
|
|
} catch (IOException e) { |
|
|
throw new RuntimeException("上传文件失败"); |
|
|
throw new RuntimeException("上传文件失败"); |
|
|
} |
|
|
} |
|
|
// 保存文件信息 |
|
|
// 保存文件信息 |
|
|
oss.setFileName(fileName); |
|
|
|
|
|
oss.setUrl(path + "\\" + fileName); |
|
|
|
|
|
oss.setNewFileName(newFileName); |
|
|
|
|
|
oss.setCreateDate(date); |
|
|
|
|
|
oss.setFileType(suffix); |
|
|
|
|
|
oss.setOrderReftype("询价文档"); |
|
|
|
|
|
this.save(oss); |
|
|
|
|
|
|
|
|
uploadEntity.setFileName(fileName); |
|
|
|
|
|
uploadEntity.setUrl(targetFile.getPath()); |
|
|
|
|
|
uploadEntity.setNewFileName(newFileName); |
|
|
|
|
|
uploadEntity.setCreateDate(date); |
|
|
|
|
|
uploadEntity.setFileType(suffix); |
|
|
|
|
|
uploadEntity.setOrderReftype("询价文档"); |
|
|
|
|
|
uploadEntity.setCreatedBy(oss.getCreatedBy()); |
|
|
|
|
|
uploadEntity.setOrderRef1(oss.getOrderRef1()); |
|
|
|
|
|
uploadEntity.setOrderRef2(oss.getOrderRef2()); |
|
|
|
|
|
uploadEntity.setOrderRef3(oss.getOrderRef3()); |
|
|
|
|
|
uploadEntity.setOrderRef4(oss.getOrderRef4()); |
|
|
|
|
|
uploadEntity.setOrderRef5(oss.getOrderRef5()); |
|
|
|
|
|
uploadEntity.setOrderRef6(oss.getOrderRef6()); |
|
|
|
|
|
uploadEntity.setFileTypeCode(oss.getFileTypeCode()); |
|
|
|
|
|
uploadEntity.setCAdditionalInfo(oss.getCAdditionalInfo()); |
|
|
|
|
|
this.save(uploadEntity); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@Override |
|
|
@Override |
|
|
@ -125,6 +135,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
// 上传文件 |
|
|
// 上传文件 |
|
|
Date date = new Date(); |
|
|
Date date = new Date(); |
|
|
for (MultipartFile file : files) { |
|
|
for (MultipartFile file : files) { |
|
|
|
|
|
SysOssEntity uploadEntity = new SysOssEntity(); |
|
|
String fileName = file.getOriginalFilename(); |
|
|
String fileName = file.getOriginalFilename(); |
|
|
if (StringUtils.isEmpty(fileName)) { |
|
|
if (StringUtils.isEmpty(fileName)) { |
|
|
throw new IllegalArgumentException("文件名不能为空"); |
|
|
throw new IllegalArgumentException("文件名不能为空"); |
|
|
@ -146,20 +157,29 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
fileDir.mkdirs(); |
|
|
fileDir.mkdirs(); |
|
|
} |
|
|
} |
|
|
// 保存文件 |
|
|
// 保存文件 |
|
|
File targetFile = new File(path, fileName); |
|
|
|
|
|
|
|
|
File targetFile = new File(path, newFileName); |
|
|
try { |
|
|
try { |
|
|
file.transferTo(targetFile); |
|
|
file.transferTo(targetFile); |
|
|
} catch (IOException e) { |
|
|
} catch (IOException e) { |
|
|
throw new RuntimeException("上传文件失败"); |
|
|
throw new RuntimeException("上传文件失败"); |
|
|
} |
|
|
} |
|
|
// 保存文件信息 |
|
|
// 保存文件信息 |
|
|
oss.setFileName(fileName); |
|
|
|
|
|
oss.setUrl(path + "\\" + fileName); |
|
|
|
|
|
oss.setNewFileName(newFileName); |
|
|
|
|
|
oss.setCreateDate(date); |
|
|
|
|
|
oss.setFileType(suffix); |
|
|
|
|
|
oss.setOrderReftype(oss.getOrderReftype()); |
|
|
|
|
|
this.save(oss); |
|
|
|
|
|
|
|
|
uploadEntity.setFileName(fileName); |
|
|
|
|
|
uploadEntity.setUrl(targetFile.getPath()); |
|
|
|
|
|
uploadEntity.setNewFileName(newFileName); |
|
|
|
|
|
uploadEntity.setCreateDate(date); |
|
|
|
|
|
uploadEntity.setFileType(suffix); |
|
|
|
|
|
uploadEntity.setOrderReftype(oss.getOrderReftype()); |
|
|
|
|
|
uploadEntity.setCreatedBy(oss.getCreatedBy()); |
|
|
|
|
|
uploadEntity.setOrderRef1(oss.getOrderRef1()); |
|
|
|
|
|
uploadEntity.setOrderRef2(oss.getOrderRef2()); |
|
|
|
|
|
uploadEntity.setOrderRef3(oss.getOrderRef3()); |
|
|
|
|
|
uploadEntity.setOrderRef4(oss.getOrderRef4()); |
|
|
|
|
|
uploadEntity.setOrderRef5(oss.getOrderRef5()); |
|
|
|
|
|
uploadEntity.setOrderRef6(oss.getOrderRef6()); |
|
|
|
|
|
uploadEntity.setFileTypeCode(oss.getFileTypeCode()); |
|
|
|
|
|
uploadEntity.setCAdditionalInfo(oss.getCAdditionalInfo()); |
|
|
|
|
|
this.save(uploadEntity); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@Override |
|
|
@Override |
|
|
@ -206,7 +226,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
fileDir.mkdirs(); |
|
|
fileDir.mkdirs(); |
|
|
} |
|
|
} |
|
|
// 保存文件 |
|
|
// 保存文件 |
|
|
File targetFile = new File(path, fileName); |
|
|
|
|
|
|
|
|
File targetFile = new File(path, newFileName); |
|
|
try { |
|
|
try { |
|
|
file.transferTo(targetFile); |
|
|
file.transferTo(targetFile); |
|
|
} catch (IOException e) { |
|
|
} catch (IOException e) { |
|
|
@ -215,7 +235,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
oss.setCreatedBy(oss2.getCreatedBy()); |
|
|
oss.setCreatedBy(oss2.getCreatedBy()); |
|
|
// 保存文件信息 |
|
|
// 保存文件信息 |
|
|
oss.setFileName(fileName); |
|
|
oss.setFileName(fileName); |
|
|
oss.setUrl(path + "\\" + fileName); |
|
|
|
|
|
|
|
|
oss.setUrl(targetFile.getPath()); |
|
|
oss.setNewFileName(newFileName); |
|
|
oss.setNewFileName(newFileName); |
|
|
oss.setCreateDate(date); |
|
|
oss.setCreateDate(date); |
|
|
oss.setFileType(suffix); |
|
|
oss.setFileType(suffix); |
|
|
@ -282,7 +302,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
public void removeOssFile(List<Integer> ids) { |
|
|
public void removeOssFile(List<Integer> ids) { |
|
|
List<SysOssEntity> list = lambdaQuery().in(SysOssEntity::getId, ids).list(); |
|
|
List<SysOssEntity> list = lambdaQuery().in(SysOssEntity::getId, ids).list(); |
|
|
for (SysOssEntity entity : list) { |
|
|
for (SysOssEntity entity : list) { |
|
|
File file = new File(entity.getUrl()); |
|
|
|
|
|
|
|
|
File file = resolveStorageFile(entity); |
|
|
if (file.exists()) { |
|
|
if (file.exists()) { |
|
|
file.delete(); |
|
|
file.delete(); |
|
|
} |
|
|
} |
|
|
@ -315,7 +335,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 创建文件对象 |
|
|
// 创建文件对象 |
|
|
File file = new File(oss.getUrl()); |
|
|
|
|
|
|
|
|
File file = resolveStorageFile(oss); |
|
|
if (!file.exists()) { |
|
|
if (!file.exists()) { |
|
|
throw new IllegalArgumentException("文件不存在"); |
|
|
throw new IllegalArgumentException("文件不存在"); |
|
|
} |
|
|
} |
|
|
@ -328,7 +348,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 设置响应头 |
|
|
// 设置响应头 |
|
|
if ("txt".equals(oss.getFileSuffix())){ |
|
|
|
|
|
|
|
|
if ("txt".equalsIgnoreCase(resolveFileSuffix(oss))){ |
|
|
response.setContentType("text/plain;charset=utf-8"); |
|
|
response.setContentType("text/plain;charset=utf-8"); |
|
|
}else { |
|
|
}else { |
|
|
response.setContentType("application/octet-stream;charset=utf-8"); |
|
|
response.setContentType("application/octet-stream;charset=utf-8"); |
|
|
@ -384,21 +404,18 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
if (getFileData.isEmpty()) { |
|
|
if (getFileData.isEmpty()) { |
|
|
throw new RuntimeException("该文件不存在,请刷新列表"); |
|
|
throw new RuntimeException("该文件不存在,请刷新列表"); |
|
|
} |
|
|
} |
|
|
File file = new File(getFileData.get(0).getUrl()); |
|
|
|
|
|
|
|
|
SysOssEntity ossEntity = getFileData.get(0); |
|
|
|
|
|
File file = resolveStorageFile(ossEntity); |
|
|
|
|
|
if (!file.exists()) { |
|
|
|
|
|
throw new RuntimeException("文件不存在,请刷新后重试"); |
|
|
|
|
|
} |
|
|
//读取缓存1kb |
|
|
//读取缓存1kb |
|
|
byte[] buffer = new byte[1024]; |
|
|
byte[] buffer = new byte[1024]; |
|
|
FileInputStream fis = null; |
|
|
|
|
|
BufferedInputStream bis = null; |
|
|
|
|
|
//FileOutputStream fos = null; |
|
|
|
|
|
//BufferedOutputStream bos = null; |
|
|
|
|
|
response.setContentType("application/force-download;charset=utf-8"); |
|
|
response.setContentType("application/force-download;charset=utf-8"); |
|
|
response.setHeader("Content-disposition", "attachment; filename=" + new String(getFileData.get(0).getFileName().getBytes("gbk"), "iso8859-1")); |
|
|
|
|
|
try { |
|
|
|
|
|
|
|
|
response.setHeader("Content-disposition", "attachment; filename=" + new String(ossEntity.getFileName().getBytes("gbk"), "iso8859-1")); |
|
|
|
|
|
try (FileInputStream fis = new FileInputStream(file); |
|
|
|
|
|
BufferedInputStream bis = new BufferedInputStream(fis)) { |
|
|
//读取文件 |
|
|
//读取文件 |
|
|
fis = new FileInputStream(file); |
|
|
|
|
|
//加缓存 |
|
|
|
|
|
bis = new BufferedInputStream(fis); |
|
|
|
|
|
//开始读取 |
|
|
|
|
|
int i = bis.read(buffer); |
|
|
int i = bis.read(buffer); |
|
|
//设置输出流 |
|
|
//设置输出流 |
|
|
ServletOutputStream os = response.getOutputStream(); |
|
|
ServletOutputStream os = response.getOutputStream(); |
|
|
@ -407,10 +424,44 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
os.write(buffer, 0, i); |
|
|
os.write(buffer, 0, i); |
|
|
i = bis.read(buffer); |
|
|
i = bis.read(buffer); |
|
|
} |
|
|
} |
|
|
fis.close(); |
|
|
|
|
|
//fos.close(); |
|
|
|
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
throw new RuntimeException(e.getMessage()); |
|
|
throw new RuntimeException(e.getMessage()); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private File resolveStorageFile(SysOssEntity ossEntity) { |
|
|
|
|
|
if (ossEntity == null || StringUtils.isEmpty(ossEntity.getUrl())) { |
|
|
|
|
|
return new File(""); |
|
|
|
|
|
} |
|
|
|
|
|
File fileByUrl = new File(ossEntity.getUrl()); |
|
|
|
|
|
if (StringUtils.isNotEmpty(ossEntity.getNewFileName())) { |
|
|
|
|
|
File fileByNewName; |
|
|
|
|
|
if (fileByUrl.isDirectory()) { |
|
|
|
|
|
fileByNewName = new File(fileByUrl, ossEntity.getNewFileName()); |
|
|
|
|
|
} else { |
|
|
|
|
|
File parent = fileByUrl.getParentFile(); |
|
|
|
|
|
fileByNewName = parent == null ? new File(ossEntity.getNewFileName()) : new File(parent, ossEntity.getNewFileName()); |
|
|
|
|
|
} |
|
|
|
|
|
if (fileByNewName.exists()) { |
|
|
|
|
|
return fileByNewName; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return fileByUrl; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private String resolveFileSuffix(SysOssEntity ossEntity) { |
|
|
|
|
|
if (ossEntity == null) { |
|
|
|
|
|
return ""; |
|
|
|
|
|
} |
|
|
|
|
|
if (StringUtils.isNotEmpty(ossEntity.getFileSuffix())) { |
|
|
|
|
|
return ossEntity.getFileSuffix(); |
|
|
|
|
|
} |
|
|
|
|
|
if (StringUtils.isNotEmpty(ossEntity.getFileType())) { |
|
|
|
|
|
return ossEntity.getFileType(); |
|
|
|
|
|
} |
|
|
|
|
|
if (StringUtils.isNotEmpty(ossEntity.getFileName()) && ossEntity.getFileName().contains(".")) { |
|
|
|
|
|
return ossEntity.getFileName().substring(ossEntity.getFileName().lastIndexOf(".") + 1); |
|
|
|
|
|
} |
|
|
|
|
|
return ""; |
|
|
|
|
|
} |
|
|
} |
|
|
} |