代码优化
This commit is contained in:
parent
58373861e7
commit
9d12434de4
@ -1,4 +1,4 @@
|
|||||||
package com.qiwenshare.file.config;
|
package com.qiwenshare.common.config;
|
||||||
|
|
||||||
import com.qiwenshare.common.domain.AliyunOSS;
|
import com.qiwenshare.common.domain.AliyunOSS;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
@ -1,4 +1,4 @@
|
|||||||
package com.qiwenshare.file.config;
|
package com.qiwenshare.common.config;
|
||||||
|
|
||||||
import com.github.tobato.fastdfs.FdfsClientConfig;
|
import com.github.tobato.fastdfs.FdfsClientConfig;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
@ -1,8 +1,7 @@
|
|||||||
package com.qiwenshare.file.config;
|
package com.qiwenshare.common.config;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@Data
|
@Data
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.qiwenshare.common.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DownloadFile {
|
||||||
|
private String fileUrl;
|
||||||
|
private String timeStampName;
|
||||||
|
}
|
@ -1,10 +1,11 @@
|
|||||||
package com.qiwenshare.common.download;
|
package com.qiwenshare.common.download;
|
||||||
|
|
||||||
|
import com.qiwenshare.common.domain.DownloadFile;
|
||||||
import com.qiwenshare.common.domain.UploadFile;
|
import com.qiwenshare.common.domain.UploadFile;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class Downloader {
|
public abstract class Downloader {
|
||||||
public abstract void download(HttpServletResponse httpServletResponse);
|
public abstract void download(HttpServletResponse httpServletResponse, DownloadFile uploadFile);
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,54 @@
|
|||||||
package com.qiwenshare.common.download.product;
|
package com.qiwenshare.common.download.product;
|
||||||
|
|
||||||
|
import com.aliyun.oss.OSS;
|
||||||
|
import com.aliyun.oss.model.OSSObject;
|
||||||
|
import com.github.tobato.fastdfs.service.FastFileStorageClient;
|
||||||
|
import com.qiwenshare.common.config.QiwenFileConfig;
|
||||||
|
import com.qiwenshare.common.domain.DownloadFile;
|
||||||
import com.qiwenshare.common.download.Downloader;
|
import com.qiwenshare.common.download.Downloader;
|
||||||
|
import com.qiwenshare.common.oss.AliyunOSSDownload;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
@Component
|
||||||
public class AliyunOSSDownloader extends Downloader {
|
public class AliyunOSSDownloader extends Downloader {
|
||||||
|
@Resource
|
||||||
|
QiwenFileConfig qiwenFileConfig;
|
||||||
@Override
|
@Override
|
||||||
public void download(HttpServletResponse httpServletResponse) {
|
public void download(HttpServletResponse httpServletResponse, DownloadFile downloadFile) {
|
||||||
|
BufferedInputStream bis = null;
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
AliyunOSSDownload aliyunOSSDownload= new AliyunOSSDownload();
|
||||||
|
OSS ossClient = aliyunOSSDownload.createOSSClient(qiwenFileConfig.getAliyun().getOss());
|
||||||
|
OSSObject ossObject = ossClient.getObject(qiwenFileConfig.getAliyun().getOss().getBucketName(), downloadFile.getTimeStampName());
|
||||||
|
InputStream inputStream = ossObject.getObjectContent();
|
||||||
|
try {
|
||||||
|
bis = new BufferedInputStream(inputStream);
|
||||||
|
OutputStream os = httpServletResponse.getOutputStream();
|
||||||
|
int i = bis.read(buffer);
|
||||||
|
while (i != -1) {
|
||||||
|
os.write(buffer, 0, i);
|
||||||
|
i = bis.read(buffer);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (bis != null) {
|
||||||
|
try {
|
||||||
|
bis.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
ossClient.shutdown();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
package com.qiwenshare.common.download.product;
|
|
||||||
|
|
||||||
import com.qiwenshare.common.download.Downloader;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
public class ChunkDownloader extends Downloader {
|
|
||||||
@Override
|
|
||||||
public void download(HttpServletResponse httpServletResponse) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,12 +1,44 @@
|
|||||||
package com.qiwenshare.common.download.product;
|
package com.qiwenshare.common.download.product;
|
||||||
|
|
||||||
|
import com.github.tobato.fastdfs.proto.storage.DownloadByteArray;
|
||||||
|
import com.github.tobato.fastdfs.service.FastFileStorageClient;
|
||||||
|
import com.qiwenshare.common.domain.DownloadFile;
|
||||||
|
import com.qiwenshare.common.domain.UploadFile;
|
||||||
import com.qiwenshare.common.download.Downloader;
|
import com.qiwenshare.common.download.Downloader;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.servlet.ServletOutputStream;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@Component
|
||||||
public class FastDFSDownloader extends Downloader {
|
public class FastDFSDownloader extends Downloader {
|
||||||
|
@Autowired
|
||||||
|
private FastFileStorageClient fastFileStorageClient;
|
||||||
@Override
|
@Override
|
||||||
public void download(HttpServletResponse httpServletResponse) {
|
public void download(HttpServletResponse httpServletResponse, DownloadFile downloadFile) {
|
||||||
|
String group = downloadFile.getFileUrl().substring(0, downloadFile.getFileUrl().indexOf("/"));
|
||||||
|
String path = downloadFile.getFileUrl().substring(downloadFile.getFileUrl().indexOf("/") + 1);
|
||||||
|
DownloadByteArray downloadByteArray = new DownloadByteArray();
|
||||||
|
byte[] bytes = fastFileStorageClient.downloadFile(group, path, downloadByteArray);
|
||||||
|
|
||||||
|
// // 这里只是为了整合fastdfs,所以写死了文件格式。需要在上传的时候保存文件名。下载的时候使用对应的格式
|
||||||
|
// response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("sb.xlsx", "UTF-8"));
|
||||||
|
// response.setCharacterEncoding("UTF-8");
|
||||||
|
ServletOutputStream outputStream = null;
|
||||||
|
try {
|
||||||
|
outputStream = httpServletResponse.getOutputStream();
|
||||||
|
outputStream.write(bytes);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
outputStream.flush();
|
||||||
|
outputStream.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
package com.qiwenshare.common.download.product;
|
||||||
|
|
||||||
|
import com.github.tobato.fastdfs.service.FastFileStorageClient;
|
||||||
|
import com.qiwenshare.common.domain.DownloadFile;
|
||||||
|
import com.qiwenshare.common.download.Downloader;
|
||||||
|
import com.qiwenshare.common.operation.FileOperation;
|
||||||
|
import com.qiwenshare.common.util.PathUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class LocalStorageDownloader extends Downloader {
|
||||||
|
@Override
|
||||||
|
public void download(HttpServletResponse httpServletResponse, DownloadFile downloadFile) {
|
||||||
|
BufferedInputStream bis = null;
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
//设置文件路径
|
||||||
|
File file = FileOperation.newFile(PathUtil.getStaticPath() + downloadFile.getFileUrl());
|
||||||
|
if (file.exists()) {
|
||||||
|
|
||||||
|
|
||||||
|
FileInputStream fis = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
fis = new FileInputStream(file);
|
||||||
|
bis = new BufferedInputStream(fis);
|
||||||
|
OutputStream os = httpServletResponse.getOutputStream();
|
||||||
|
int i = bis.read(buffer);
|
||||||
|
while (i != -1) {
|
||||||
|
os.write(buffer, 0, i);
|
||||||
|
i = bis.read(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (bis != null) {
|
||||||
|
try {
|
||||||
|
bis.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.qiwenshare.common.factory;
|
||||||
|
|
||||||
|
import com.qiwenshare.common.download.Downloader;
|
||||||
|
import com.qiwenshare.common.download.product.AliyunOSSDownloader;
|
||||||
|
import com.qiwenshare.common.upload.product.AliyunOSSUploader;
|
||||||
|
import com.qiwenshare.common.upload.Uploader;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class AliyunOSSOperationFactory implements FileOperationFactory {
|
||||||
|
@Resource
|
||||||
|
AliyunOSSUploader aliyunOSSUploader;
|
||||||
|
@Resource
|
||||||
|
AliyunOSSDownloader aliyunOSSDownloader;
|
||||||
|
@Override
|
||||||
|
public Uploader getUploader() {
|
||||||
|
return aliyunOSSUploader;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Downloader getDownloader() {
|
||||||
|
return aliyunOSSDownloader;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package com.qiwenshare.common.upload.factory;
|
package com.qiwenshare.common.factory;
|
||||||
|
|
||||||
import com.github.tobato.fastdfs.service.AppendFileStorageClient;
|
import com.qiwenshare.common.download.Downloader;
|
||||||
import com.qiwenshare.common.domain.UploadFile;
|
import com.qiwenshare.common.download.product.FastDFSDownloader;
|
||||||
import com.qiwenshare.common.upload.Uploader;
|
import com.qiwenshare.common.upload.Uploader;
|
||||||
import com.qiwenshare.common.upload.product.FastDFSUploader;
|
import com.qiwenshare.common.upload.product.FastDFSUploader;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -9,17 +9,24 @@ import org.springframework.stereotype.Component;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class FastDFSUploaderFactory implements UploaderFactory {
|
public class FastDFSOperationFactory implements FileOperationFactory {
|
||||||
|
|
||||||
// @Resource
|
// @Resource
|
||||||
// AppendFileStorageClient defaultAppendFileStorageClient;
|
// AppendFileStorageClient defaultAppendFileStorageClient;
|
||||||
@Resource
|
@Resource
|
||||||
FastDFSUploader fastDFSUploader;
|
FastDFSUploader fastDFSUploader;
|
||||||
|
@Resource
|
||||||
|
FastDFSDownloader fastDFSDownloader;
|
||||||
@Override
|
@Override
|
||||||
public Uploader getUploader() {
|
public Uploader getUploader() {
|
||||||
return fastDFSUploader;
|
return fastDFSUploader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Downloader getDownloader() {
|
||||||
|
return fastDFSDownloader;
|
||||||
|
}
|
||||||
|
|
||||||
// @Override
|
// @Override
|
||||||
// public Uploader getUploader(UploadFile uploadFile) {
|
// public Uploader getUploader(UploadFile uploadFile) {
|
||||||
// return new FastDFSUploader(uploadFile, defaultAppendFileStorageClient);
|
// return new FastDFSUploader(uploadFile, defaultAppendFileStorageClient);
|
@ -0,0 +1,10 @@
|
|||||||
|
package com.qiwenshare.common.factory;
|
||||||
|
|
||||||
|
import com.qiwenshare.common.download.Downloader;
|
||||||
|
import com.qiwenshare.common.upload.Uploader;
|
||||||
|
|
||||||
|
public interface FileOperationFactory {
|
||||||
|
Uploader getUploader();
|
||||||
|
Downloader getDownloader();
|
||||||
|
// Uploader getUploader(UploadFile uploadFile);
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.qiwenshare.common.factory;
|
||||||
|
|
||||||
|
import com.qiwenshare.common.download.Downloader;
|
||||||
|
import com.qiwenshare.common.download.product.LocalStorageDownloader;
|
||||||
|
import com.qiwenshare.common.upload.product.LocalStorageUploader;
|
||||||
|
import com.qiwenshare.common.upload.Uploader;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class LocalStorageOperationFactory implements FileOperationFactory{
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
LocalStorageUploader ChunkUploader;
|
||||||
|
@Resource
|
||||||
|
LocalStorageDownloader localStorageDownloader;
|
||||||
|
@Override
|
||||||
|
public Uploader getUploader() {
|
||||||
|
return ChunkUploader;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Downloader getDownloader() {
|
||||||
|
return localStorageDownloader;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
//package com.qiwenshare.common.upload.factory;
|
//package com.qiwenshare.common.factory;
|
||||||
//
|
//
|
||||||
//import com.github.tobato.fastdfs.service.AppendFileStorageClient;
|
//import com.github.tobato.fastdfs.service.AppendFileStorageClient;
|
||||||
//import com.qiwenshare.common.domain.UploadFile;
|
//import com.qiwenshare.common.domain.UploadFile;
|
@ -1,26 +0,0 @@
|
|||||||
package com.qiwenshare.common.upload.factory;
|
|
||||||
|
|
||||||
import com.github.tobato.fastdfs.service.AppendFileStorageClient;
|
|
||||||
import com.qiwenshare.common.domain.UploadFile;
|
|
||||||
import com.qiwenshare.common.upload.product.AliyunOSSUploader;
|
|
||||||
import com.qiwenshare.common.upload.Uploader;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class AliyunOSSUploaderFactory implements UploaderFactory {
|
|
||||||
@Resource
|
|
||||||
AliyunOSSUploader aliyunOSSUploader;
|
|
||||||
@Override
|
|
||||||
public Uploader getUploader() {
|
|
||||||
return aliyunOSSUploader;
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public Uploader getUploader(UploadFile uploadFile) {
|
|
||||||
// return new AliyunOSSUploader(uploadFile);
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
package com.qiwenshare.common.upload.factory;
|
|
||||||
|
|
||||||
import com.github.tobato.fastdfs.service.AppendFileStorageClient;
|
|
||||||
import com.qiwenshare.common.domain.UploadFile;
|
|
||||||
import com.qiwenshare.common.upload.product.ChunkUploader;
|
|
||||||
import com.qiwenshare.common.upload.Uploader;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class ChunkUploaderFactory implements UploaderFactory {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
ChunkUploader ChunkUploader;
|
|
||||||
@Override
|
|
||||||
public Uploader getUploader() {
|
|
||||||
return ChunkUploader;
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public Uploader getUploader(UploadFile uploadFile) {
|
|
||||||
// return new ChunkUploader(uploadFile);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
package com.qiwenshare.common.upload.factory;
|
|
||||||
|
|
||||||
import com.github.tobato.fastdfs.service.AppendFileStorageClient;
|
|
||||||
import com.qiwenshare.common.domain.UploadFile;
|
|
||||||
import com.qiwenshare.common.upload.Uploader;
|
|
||||||
|
|
||||||
public interface UploaderFactory {
|
|
||||||
Uploader getUploader();
|
|
||||||
// Uploader getUploader(UploadFile uploadFile);
|
|
||||||
}
|
|
@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.aliyun.oss.OSS;
|
import com.aliyun.oss.OSS;
|
||||||
import com.aliyun.oss.OSSClientBuilder;
|
import com.aliyun.oss.OSSClientBuilder;
|
||||||
import com.aliyun.oss.model.*;
|
import com.aliyun.oss.model.*;
|
||||||
|
import com.qiwenshare.common.config.QiwenFileConfig;
|
||||||
import com.qiwenshare.common.domain.AliyunOSS;
|
import com.qiwenshare.common.domain.AliyunOSS;
|
||||||
import com.qiwenshare.common.domain.UploadFile;
|
import com.qiwenshare.common.domain.UploadFile;
|
||||||
import com.qiwenshare.common.exception.UploadGeneralException;
|
import com.qiwenshare.common.exception.UploadGeneralException;
|
||||||
@ -20,6 +21,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
|
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -28,12 +30,13 @@ import java.util.*;
|
|||||||
@Component
|
@Component
|
||||||
public class AliyunOSSUploader extends Uploader {
|
public class AliyunOSSUploader extends Uploader {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(AliyunOSSUploader.class);
|
private static final Logger logger = LoggerFactory.getLogger(AliyunOSSUploader.class);
|
||||||
|
@Resource
|
||||||
|
QiwenFileConfig qiwenFileConfig;
|
||||||
// private UploadFile uploadFile;
|
// private UploadFile uploadFile;
|
||||||
private String endpoint;
|
// private String endpoint;
|
||||||
private String accessKeyId;
|
// private String accessKeyId;
|
||||||
private String accessKeySecret;
|
// private String accessKeySecret;
|
||||||
private String bucketName;
|
// private String bucketName;
|
||||||
|
|
||||||
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
|
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
|
||||||
public static Map<String, List<PartETag>> partETagsMap = new HashMap<String, List<PartETag>>();
|
public static Map<String, List<PartETag>> partETagsMap = new HashMap<String, List<PartETag>>();
|
||||||
@ -57,12 +60,12 @@ public class AliyunOSSUploader extends Uploader {
|
|||||||
|
|
||||||
List<UploadFile> saveUploadFileList = new ArrayList<>();
|
List<UploadFile> saveUploadFileList = new ArrayList<>();
|
||||||
StandardMultipartHttpServletRequest request = (StandardMultipartHttpServletRequest) httpServletRequest;
|
StandardMultipartHttpServletRequest request = (StandardMultipartHttpServletRequest) httpServletRequest;
|
||||||
AliyunOSS aliyunOSS = (AliyunOSS) request.getAttribute("oss");
|
// AliyunOSS aliyunOSS = (AliyunOSS) request.getAttribute("oss");
|
||||||
|
//
|
||||||
endpoint = aliyunOSS.getEndpoint();
|
// endpoint = aliyunOSS.getEndpoint();
|
||||||
accessKeyId = aliyunOSS.getAccessKeyId();
|
// accessKeyId = aliyunOSS.getAccessKeyId();
|
||||||
accessKeySecret = aliyunOSS.getAccessKeySecret();
|
// accessKeySecret = aliyunOSS.getAccessKeySecret();
|
||||||
bucketName = aliyunOSS.getBucketName();
|
// bucketName = aliyunOSS.getBucketName();
|
||||||
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
|
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
|
||||||
if (!isMultipart) {
|
if (!isMultipart) {
|
||||||
throw new UploadGeneralException("未包含文件上传域");
|
throw new UploadGeneralException("未包含文件上传域");
|
||||||
@ -114,12 +117,12 @@ public class AliyunOSSUploader extends Uploader {
|
|||||||
|
|
||||||
synchronized (AliyunOSSUploader.class) {
|
synchronized (AliyunOSSUploader.class) {
|
||||||
if (uploadPartRequestMap.get(uploadFile.getIdentifier()) == null) {
|
if (uploadPartRequestMap.get(uploadFile.getIdentifier()) == null) {
|
||||||
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, ossFilePath.substring(1));
|
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(qiwenFileConfig.getAliyun().getOss().getBucketName(), ossFilePath.substring(1));
|
||||||
InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
|
InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
|
||||||
String uploadId = upresult.getUploadId();
|
String uploadId = upresult.getUploadId();
|
||||||
|
|
||||||
UploadFileInfo uploadPartRequest = new UploadFileInfo();
|
UploadFileInfo uploadPartRequest = new UploadFileInfo();
|
||||||
uploadPartRequest.setBucketName(bucketName);
|
uploadPartRequest.setBucketName(qiwenFileConfig.getAliyun().getOss().getBucketName());
|
||||||
uploadPartRequest.setKey(ossFilePath.substring(1));
|
uploadPartRequest.setKey(ossFilePath.substring(1));
|
||||||
uploadPartRequest.setUploadId(uploadId);
|
uploadPartRequest.setUploadId(uploadId);
|
||||||
uploadPartRequestMap.put(uploadFile.getIdentifier(), uploadPartRequest);
|
uploadPartRequestMap.put(uploadFile.getIdentifier(), uploadPartRequest);
|
||||||
@ -190,7 +193,7 @@ public class AliyunOSSUploader extends Uploader {
|
|||||||
Collections.sort(partETags, Comparator.comparingInt(PartETag::getPartNumber));
|
Collections.sort(partETags, Comparator.comparingInt(PartETag::getPartNumber));
|
||||||
UploadFileInfo uploadFileInfo = uploadPartRequestMap.get(uploadFile.getIdentifier());
|
UploadFileInfo uploadFileInfo = uploadPartRequestMap.get(uploadFile.getIdentifier());
|
||||||
CompleteMultipartUploadRequest completeMultipartUploadRequest =
|
CompleteMultipartUploadRequest completeMultipartUploadRequest =
|
||||||
new CompleteMultipartUploadRequest(bucketName,
|
new CompleteMultipartUploadRequest(qiwenFileConfig.getAliyun().getOss().getBucketName(),
|
||||||
uploadFileInfo.getKey(),
|
uploadFileInfo.getKey(),
|
||||||
uploadFileInfo.getUploadId(),
|
uploadFileInfo.getUploadId(),
|
||||||
partETags);
|
partETags);
|
||||||
@ -207,7 +210,7 @@ public class AliyunOSSUploader extends Uploader {
|
|||||||
|
|
||||||
private void listFile(UploadFile uploadFile) {
|
private void listFile(UploadFile uploadFile) {
|
||||||
// 列举已上传的分片,其中uploadId来自于InitiateMultipartUpload返回的结果。
|
// 列举已上传的分片,其中uploadId来自于InitiateMultipartUpload返回的结果。
|
||||||
ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, uploadPartRequestMap.get(uploadFile.getIdentifier()).getKey(), uploadPartRequestMap.get(uploadFile.getIdentifier()).getUploadId());
|
ListPartsRequest listPartsRequest = new ListPartsRequest(qiwenFileConfig.getAliyun().getOss().getBucketName(), uploadPartRequestMap.get(uploadFile.getIdentifier()).getKey(), uploadPartRequestMap.get(uploadFile.getIdentifier()).getUploadId());
|
||||||
// 设置uploadId。
|
// 设置uploadId。
|
||||||
//listPartsRequest.setUploadId(uploadId);
|
//listPartsRequest.setUploadId(uploadId);
|
||||||
// 设置分页时每一页中分片数量为100个。默认列举1000个分片。
|
// 设置分页时每一页中分片数量为100个。默认列举1000个分片。
|
||||||
@ -237,7 +240,7 @@ public class AliyunOSSUploader extends Uploader {
|
|||||||
*/
|
*/
|
||||||
private void cancelUpload(UploadFile uploadFile) {
|
private void cancelUpload(UploadFile uploadFile) {
|
||||||
AbortMultipartUploadRequest abortMultipartUploadRequest =
|
AbortMultipartUploadRequest abortMultipartUploadRequest =
|
||||||
new AbortMultipartUploadRequest(bucketName, uploadPartRequestMap.get(uploadFile.getIdentifier()).getKey(), uploadPartRequestMap.get(uploadFile.getIdentifier()).getUploadId());
|
new AbortMultipartUploadRequest(qiwenFileConfig.getAliyun().getOss().getBucketName(), uploadPartRequestMap.get(uploadFile.getIdentifier()).getKey(), uploadPartRequestMap.get(uploadFile.getIdentifier()).getUploadId());
|
||||||
getClient(uploadFile).abortMultipartUpload(abortMultipartUploadRequest);
|
getClient(uploadFile).abortMultipartUpload(abortMultipartUploadRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,7 +260,7 @@ public class AliyunOSSUploader extends Uploader {
|
|||||||
private synchronized OSS getClient(UploadFile uploadFile) {
|
private synchronized OSS getClient(UploadFile uploadFile) {
|
||||||
OSS ossClient = null;
|
OSS ossClient = null;
|
||||||
if (ossMap.get(uploadFile.getIdentifier()) == null) {
|
if (ossMap.get(uploadFile.getIdentifier()) == null) {
|
||||||
ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
ossClient = new OSSClientBuilder().build(qiwenFileConfig.getAliyun().getOss().getEndpoint(), qiwenFileConfig.getAliyun().getOss().getAccessKeyId(), qiwenFileConfig.getAliyun().getOss().getAccessKeySecret());
|
||||||
ossMap.put(uploadFile.getIdentifier(), ossClient);
|
ossMap.put(uploadFile.getIdentifier(), ossClient);
|
||||||
} else {
|
} else {
|
||||||
ossClient = ossMap.get(uploadFile.getIdentifier());
|
ossClient = ossMap.get(uploadFile.getIdentifier());
|
||||||
|
@ -26,11 +26,11 @@ import java.util.Iterator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@Component
|
@Component
|
||||||
public class ChunkUploader extends Uploader {
|
public class LocalStorageUploader extends Uploader {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(ChunkUploader.class);
|
private static final Logger logger = LoggerFactory.getLogger(LocalStorageUploader.class);
|
||||||
// private UploadFile uploadFile;
|
// private UploadFile uploadFile;
|
||||||
|
|
||||||
public ChunkUploader() {
|
public LocalStorageUploader() {
|
||||||
|
|
||||||
}
|
}
|
||||||
//
|
//
|
@ -1,9 +1,11 @@
|
|||||||
package com.qiwenshare.file.api;
|
package com.qiwenshare.file.api;
|
||||||
|
|
||||||
import com.qiwenshare.file.domain.StorageBean;
|
import com.qiwenshare.file.domain.StorageBean;
|
||||||
|
import com.qiwenshare.file.dto.DownloadFileDTO;
|
||||||
import com.qiwenshare.file.dto.UploadFileDTO;
|
import com.qiwenshare.file.dto.UploadFileDTO;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
public interface IFiletransferService {
|
public interface IFiletransferService {
|
||||||
|
|
||||||
@ -18,6 +20,8 @@ public interface IFiletransferService {
|
|||||||
*/
|
*/
|
||||||
void uploadFile(HttpServletRequest request, UploadFileDTO UploadFileDto, Long userId);
|
void uploadFile(HttpServletRequest request, UploadFileDTO UploadFileDto, Long userId);
|
||||||
|
|
||||||
|
void downloadFile(HttpServletResponse httpServletResponse, DownloadFileDTO downloadFileDTO);
|
||||||
|
|
||||||
StorageBean selectStorageBean(StorageBean storageBean);
|
StorageBean selectStorageBean(StorageBean storageBean);
|
||||||
|
|
||||||
void insertStorageBean(StorageBean storageBean);
|
void insertStorageBean(StorageBean storageBean);
|
||||||
|
@ -14,7 +14,7 @@ import com.qiwenshare.file.api.IFileService;
|
|||||||
import com.qiwenshare.file.api.IRecoveryFileService;
|
import com.qiwenshare.file.api.IRecoveryFileService;
|
||||||
import com.qiwenshare.file.api.IUserFileService;
|
import com.qiwenshare.file.api.IUserFileService;
|
||||||
import com.qiwenshare.file.api.IUserService;
|
import com.qiwenshare.file.api.IUserService;
|
||||||
import com.qiwenshare.file.config.QiwenFileConfig;
|
import com.qiwenshare.common.config.QiwenFileConfig;
|
||||||
import com.qiwenshare.file.config.es.FileSearch;
|
import com.qiwenshare.file.config.es.FileSearch;
|
||||||
import com.qiwenshare.file.domain.*;
|
import com.qiwenshare.file.domain.*;
|
||||||
import com.qiwenshare.file.dto.*;
|
import com.qiwenshare.file.dto.*;
|
||||||
|
@ -3,7 +3,6 @@ package com.qiwenshare.file.controller;
|
|||||||
import com.aliyun.oss.OSS;
|
import com.aliyun.oss.OSS;
|
||||||
import com.aliyun.oss.model.OSSObject;
|
import com.aliyun.oss.model.OSSObject;
|
||||||
import com.github.tobato.fastdfs.proto.storage.DownloadByteArray;
|
import com.github.tobato.fastdfs.proto.storage.DownloadByteArray;
|
||||||
import com.github.tobato.fastdfs.service.AppendFileStorageClient;
|
|
||||||
import com.github.tobato.fastdfs.service.FastFileStorageClient;
|
import com.github.tobato.fastdfs.service.FastFileStorageClient;
|
||||||
import com.qiwenshare.common.cbb.DateUtil;
|
import com.qiwenshare.common.cbb.DateUtil;
|
||||||
import com.qiwenshare.common.operation.FileOperation;
|
import com.qiwenshare.common.operation.FileOperation;
|
||||||
@ -16,7 +15,7 @@ import com.qiwenshare.file.api.IFileService;
|
|||||||
import com.qiwenshare.file.api.IFiletransferService;
|
import com.qiwenshare.file.api.IFiletransferService;
|
||||||
import com.qiwenshare.file.api.IUserFileService;
|
import com.qiwenshare.file.api.IUserFileService;
|
||||||
import com.qiwenshare.file.api.IUserService;
|
import com.qiwenshare.file.api.IUserService;
|
||||||
import com.qiwenshare.file.config.QiwenFileConfig;
|
import com.qiwenshare.common.config.QiwenFileConfig;
|
||||||
import com.qiwenshare.file.domain.FileBean;
|
import com.qiwenshare.file.domain.FileBean;
|
||||||
import com.qiwenshare.file.domain.StorageBean;
|
import com.qiwenshare.file.domain.StorageBean;
|
||||||
import com.qiwenshare.file.domain.UserBean;
|
import com.qiwenshare.file.domain.UserBean;
|
||||||
@ -34,7 +33,6 @@ import javax.servlet.ServletOutputStream;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.URLEncoder;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -144,29 +142,7 @@ public class FiletransferController {
|
|||||||
@MyLog(operation = "下载文件", module = CURRENT_MODULE)
|
@MyLog(operation = "下载文件", module = CURRENT_MODULE)
|
||||||
@RequestMapping(value = "/downloadfile", method = RequestMethod.GET)
|
@RequestMapping(value = "/downloadfile", method = RequestMethod.GET)
|
||||||
public void downloadFile(HttpServletResponse response, DownloadFileDTO downloadFileDTO) {
|
public void downloadFile(HttpServletResponse response, DownloadFileDTO downloadFileDTO) {
|
||||||
UserFile userFile = userFileService.getById(downloadFileDTO.getUserFileId());
|
filetransferService.downloadFile(response, downloadFileDTO);
|
||||||
|
|
||||||
String fileName = userFile.getFileName() + "." + userFile.getExtendName();
|
|
||||||
try {
|
|
||||||
fileName = new String(fileName.getBytes("utf-8"), "ISO-8859-1");
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
response.setContentType("application/force-download");// 设置强制下载不打开
|
|
||||||
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名
|
|
||||||
|
|
||||||
|
|
||||||
FileBean fileBean = fileService.getById(userFile.getFileId());
|
|
||||||
if (fileBean.getIsOSS() != null && fileBean.getIsOSS() == 1) {
|
|
||||||
aliyunDownload(response, fileBean);
|
|
||||||
} else if (fileBean.getStorageType() == 0) {
|
|
||||||
localFileDownload(response, fileBean);
|
|
||||||
} else if (fileBean.getStorageType() == 1) {
|
|
||||||
aliyunDownload(response, fileBean);
|
|
||||||
} else if (fileBean.getStorageType() == 2) {
|
|
||||||
fastFDSDownload(response, fileBean);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void localFileDownload(HttpServletResponse response, FileBean fileBean) {
|
private void localFileDownload(HttpServletResponse response, FileBean fileBean) {
|
||||||
|
@ -7,7 +7,7 @@ import com.qiwenshare.common.domain.AliyunOSS;
|
|||||||
import com.qiwenshare.common.util.JjwtUtil;
|
import com.qiwenshare.common.util.JjwtUtil;
|
||||||
import com.qiwenshare.file.anno.MyLog;
|
import com.qiwenshare.file.anno.MyLog;
|
||||||
import com.qiwenshare.file.api.IUserService;
|
import com.qiwenshare.file.api.IUserService;
|
||||||
import com.qiwenshare.file.config.QiwenFileConfig;
|
import com.qiwenshare.common.config.QiwenFileConfig;
|
||||||
import com.qiwenshare.file.domain.UserBean;
|
import com.qiwenshare.file.domain.UserBean;
|
||||||
import com.qiwenshare.file.dto.user.RegisterDTO;
|
import com.qiwenshare.file.dto.user.RegisterDTO;
|
||||||
import com.qiwenshare.file.vo.user.UserLoginVo;
|
import com.qiwenshare.file.vo.user.UserLoginVo;
|
||||||
|
@ -8,7 +8,7 @@ import com.qiwenshare.common.oss.AliyunOSSDelete;
|
|||||||
import com.qiwenshare.common.util.FileUtil;
|
import com.qiwenshare.common.util.FileUtil;
|
||||||
import com.qiwenshare.common.util.PathUtil;
|
import com.qiwenshare.common.util.PathUtil;
|
||||||
import com.qiwenshare.file.api.IFileService;
|
import com.qiwenshare.file.api.IFileService;
|
||||||
import com.qiwenshare.file.config.QiwenFileConfig;
|
import com.qiwenshare.common.config.QiwenFileConfig;
|
||||||
import com.qiwenshare.file.domain.FileBean;
|
import com.qiwenshare.file.domain.FileBean;
|
||||||
import com.qiwenshare.file.mapper.FileMapper;
|
import com.qiwenshare.file.mapper.FileMapper;
|
||||||
import com.qiwenshare.file.mapper.UserFileMapper;
|
import com.qiwenshare.file.mapper.UserFileMapper;
|
||||||
|
@ -1,26 +1,28 @@
|
|||||||
package com.qiwenshare.file.service;
|
package com.qiwenshare.file.service;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.github.tobato.fastdfs.service.AppendFileStorageClient;
|
|
||||||
import com.qiwenshare.common.cbb.DateUtil;
|
import com.qiwenshare.common.cbb.DateUtil;
|
||||||
|
import com.qiwenshare.common.domain.DownloadFile;
|
||||||
import com.qiwenshare.common.domain.UploadFile;
|
import com.qiwenshare.common.domain.UploadFile;
|
||||||
import com.qiwenshare.common.upload.factory.AliyunOSSUploaderFactory;
|
//import com.qiwenshare.common.factory.FileOperationFactory;
|
||||||
import com.qiwenshare.common.upload.factory.ChunkUploaderFactory;
|
import com.qiwenshare.common.download.Downloader;
|
||||||
|
import com.qiwenshare.common.factory.FileOperationFactory;
|
||||||
import com.qiwenshare.common.upload.Uploader;
|
import com.qiwenshare.common.upload.Uploader;
|
||||||
import com.qiwenshare.common.upload.factory.FastDFSUploaderFactory;
|
|
||||||
import com.qiwenshare.common.upload.factory.UploaderFactory;
|
|
||||||
import com.qiwenshare.file.api.IFiletransferService;
|
import com.qiwenshare.file.api.IFiletransferService;
|
||||||
|
|
||||||
import com.qiwenshare.common.domain.AliyunOSS;
|
import com.qiwenshare.common.config.QiwenFileConfig;
|
||||||
import com.qiwenshare.file.config.QiwenFileConfig;
|
|
||||||
import com.qiwenshare.file.domain.UserFile;
|
import com.qiwenshare.file.domain.UserFile;
|
||||||
|
import com.qiwenshare.file.dto.DownloadFileDTO;
|
||||||
import com.qiwenshare.file.dto.UploadFileDTO;
|
import com.qiwenshare.file.dto.UploadFileDTO;
|
||||||
import com.qiwenshare.file.mapper.FileMapper;
|
import com.qiwenshare.file.mapper.FileMapper;
|
||||||
import com.qiwenshare.file.domain.FileBean;
|
import com.qiwenshare.file.domain.FileBean;
|
||||||
@ -37,27 +39,23 @@ public class FiletransferService implements IFiletransferService {
|
|||||||
StorageMapper storageMapper;
|
StorageMapper storageMapper;
|
||||||
@Resource
|
@Resource
|
||||||
FileMapper fileMapper;
|
FileMapper fileMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
QiwenFileConfig qiwenFileConfig;
|
QiwenFileConfig qiwenFileConfig;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
UserFileMapper userFileMapper;
|
UserFileMapper userFileMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
UploaderFactory fastDFSUploaderFactory;
|
FileOperationFactory fastDFSOperationFactory;
|
||||||
@Resource
|
@Resource
|
||||||
UploaderFactory aliyunOSSUploaderFactory;
|
FileOperationFactory aliyunOSSOperationFactory;
|
||||||
@Resource
|
@Resource
|
||||||
UploaderFactory chunkUploaderFactory;
|
FileOperationFactory localStorageOperationFactory;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uploadFile(HttpServletRequest request, UploadFileDTO UploadFileDto, Long userId) {
|
public void uploadFile(HttpServletRequest request, UploadFileDTO UploadFileDto, Long userId) {
|
||||||
AliyunOSS oss = qiwenFileConfig.getAliyun().getOss();
|
|
||||||
String storyType = qiwenFileConfig.getStorageType();
|
Uploader uploader = null;
|
||||||
request.setAttribute("oss", oss);
|
|
||||||
Uploader uploader;
|
|
||||||
UploadFile uploadFile = new UploadFile();
|
UploadFile uploadFile = new UploadFile();
|
||||||
uploadFile.setChunkNumber(UploadFileDto.getChunkNumber());
|
uploadFile.setChunkNumber(UploadFileDto.getChunkNumber());
|
||||||
uploadFile.setChunkSize(UploadFileDto.getChunkSize());
|
uploadFile.setChunkSize(UploadFileDto.getChunkSize());
|
||||||
@ -66,12 +64,13 @@ public class FiletransferService implements IFiletransferService {
|
|||||||
uploadFile.setTotalSize(UploadFileDto.getTotalSize());
|
uploadFile.setTotalSize(UploadFileDto.getTotalSize());
|
||||||
uploadFile.setCurrentChunkSize(UploadFileDto.getCurrentChunkSize());
|
uploadFile.setCurrentChunkSize(UploadFileDto.getCurrentChunkSize());
|
||||||
synchronized (FiletransferService.class) {
|
synchronized (FiletransferService.class) {
|
||||||
if (oss.isEnabled()) {
|
String storageType = qiwenFileConfig.getStorageType();
|
||||||
uploader = aliyunOSSUploaderFactory.getUploader();
|
if ("0".equals(storageType)) {
|
||||||
} else if ("FastFDS".equals(storyType)) {
|
uploader = localStorageOperationFactory.getUploader();
|
||||||
uploader = fastDFSUploaderFactory.getUploader();
|
} else if ("1".equals(storageType)) {
|
||||||
} else {
|
uploader = aliyunOSSOperationFactory.getUploader();
|
||||||
uploader = chunkUploaderFactory.getUploader();
|
} else if ("2".equals(storageType)) {
|
||||||
|
uploader = fastDFSOperationFactory.getUploader();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,6 +117,37 @@ public class FiletransferService implements IFiletransferService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void downloadFile(HttpServletResponse httpServletResponse, DownloadFileDTO downloadFileDTO) {
|
||||||
|
UserFile userFile = userFileMapper.selectById(downloadFileDTO.getUserFileId());
|
||||||
|
|
||||||
|
String fileName = userFile.getFileName() + "." + userFile.getExtendName();
|
||||||
|
try {
|
||||||
|
fileName = new String(fileName.getBytes("utf-8"), "ISO-8859-1");
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
httpServletResponse.setContentType("application/force-download");// 设置强制下载不打开
|
||||||
|
httpServletResponse.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名
|
||||||
|
|
||||||
|
|
||||||
|
FileBean fileBean = fileMapper.selectById(userFile.getFileId());
|
||||||
|
Downloader downloader = null;
|
||||||
|
if (fileBean.getIsOSS() != null && fileBean.getIsOSS() == 1) {
|
||||||
|
downloader = aliyunOSSOperationFactory.getDownloader();
|
||||||
|
} else if (fileBean.getStorageType() == 0) {
|
||||||
|
downloader = localStorageOperationFactory.getDownloader();
|
||||||
|
} else if (fileBean.getStorageType() == 1) {
|
||||||
|
downloader = aliyunOSSOperationFactory.getDownloader();
|
||||||
|
} else if (fileBean.getStorageType() == 2) {
|
||||||
|
downloader = fastDFSOperationFactory.getDownloader();
|
||||||
|
}
|
||||||
|
DownloadFile uploadFile = new DownloadFile();
|
||||||
|
uploadFile.setFileUrl(fileBean.getFileUrl());
|
||||||
|
uploadFile.setTimeStampName(fileBean.getTimeStampName());
|
||||||
|
downloader.download(httpServletResponse, uploadFile);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StorageBean selectStorageBean(StorageBean storageBean) {
|
public StorageBean selectStorageBean(StorageBean storageBean) {
|
||||||
LambdaQueryWrapper<StorageBean> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<StorageBean> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
@ -4,12 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.qiwenshare.common.cbb.DateUtil;
|
import com.qiwenshare.common.cbb.DateUtil;
|
||||||
import com.qiwenshare.common.oss.AliyunOSSRename;
|
|
||||||
import com.qiwenshare.file.api.IUserFileService;
|
import com.qiwenshare.file.api.IUserFileService;
|
||||||
import com.qiwenshare.file.config.QiwenFileConfig;
|
import com.qiwenshare.common.config.QiwenFileConfig;
|
||||||
import com.qiwenshare.file.domain.FileBean;
|
import com.qiwenshare.file.domain.FileBean;
|
||||||
import com.qiwenshare.file.domain.RecoveryFile;
|
import com.qiwenshare.file.domain.RecoveryFile;
|
||||||
import com.qiwenshare.file.domain.UserBean;
|
|
||||||
import com.qiwenshare.file.domain.UserFile;
|
import com.qiwenshare.file.domain.UserFile;
|
||||||
import com.qiwenshare.file.mapper.FileMapper;
|
import com.qiwenshare.file.mapper.FileMapper;
|
||||||
import com.qiwenshare.file.mapper.RecoveryFileMapper;
|
import com.qiwenshare.file.mapper.RecoveryFileMapper;
|
||||||
@ -20,7 +18,6 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
@ -51,11 +51,11 @@ mybatis-plus.global-config.banner=false
|
|||||||
|
|
||||||
qiwen-file.remote-login=false
|
qiwen-file.remote-login=false
|
||||||
qiwen-file.share-mode=false
|
qiwen-file.share-mode=false
|
||||||
#FastFDS
|
|
||||||
#qiwen-file.storage-type=FastFDS
|
qiwen-file.storage-type=0
|
||||||
|
|
||||||
#是否启用阿里云oss
|
#是否启用阿里云oss
|
||||||
qiwen-file.aliyun.oss.enabled=false
|
#qiwen-file.aliyun.oss.enabled=false
|
||||||
#阿里云oss基本配置
|
#阿里云oss基本配置
|
||||||
qiwen-file.aliyun.oss.endpoint=
|
qiwen-file.aliyun.oss.endpoint=
|
||||||
qiwen-file.aliyun.oss.access-key-id=
|
qiwen-file.aliyun.oss.access-key-id=
|
||||||
|
@ -30,9 +30,7 @@
|
|||||||
limit #{beginCount}, #{pageCount}
|
limit #{beginCount}, #{pageCount}
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
<sql id="selectByExtendName" >
|
||||||
<select id="selectFileByExtendName" parameterType="com.qiwenshare.file.domain.UserFile" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
|
||||||
select * from userfile
|
|
||||||
left join file on file.fileId = userfile.fileId
|
left join file on file.fileId = userfile.fileId
|
||||||
where extendName in
|
where extendName in
|
||||||
<foreach collection="fileNameList" open="(" close=")" separator="," item="fileName" >
|
<foreach collection="fileNameList" open="(" close=")" separator="," item="fileName" >
|
||||||
@ -40,41 +38,36 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
and userId = #{userId}
|
and userId = #{userId}
|
||||||
and deleteFlag = 0
|
and deleteFlag = 0
|
||||||
|
</sql>
|
||||||
|
<sql id="selectByNotExtendName">
|
||||||
|
left join file on file.fileId = userfile.fileId
|
||||||
|
where extendName not in
|
||||||
|
<foreach collection="fileNameList" open="(" close=")" separator="," item="fileName" >
|
||||||
|
#{fileName}
|
||||||
|
</foreach>
|
||||||
|
and userId = #{userId}
|
||||||
|
and deleteFlag = 0
|
||||||
|
</sql>
|
||||||
|
<select id="selectFileByExtendName" parameterType="com.qiwenshare.file.domain.UserFile" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
||||||
|
select * from userfile
|
||||||
|
<include refid="selectByExtendName"></include>
|
||||||
limit #{beginCount}, #{pageCount}
|
limit #{beginCount}, #{pageCount}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectCountByExtendName" parameterType="com.qiwenshare.file.domain.UserFile" resultType="java.lang.Long">
|
<select id="selectCountByExtendName" parameterType="com.qiwenshare.file.domain.UserFile" resultType="java.lang.Long">
|
||||||
select count(*) from userfile
|
select count(*) from userfile
|
||||||
left join file on file.fileId = userfile.fileId
|
<include refid="selectByExtendName"></include>
|
||||||
where extendName in
|
|
||||||
<foreach collection="fileNameList" open="(" close=")" separator="," item="fileName" >
|
|
||||||
#{fileName}
|
|
||||||
</foreach>
|
|
||||||
and userId = #{userId}
|
|
||||||
and deleteFlag = 0
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectFileNotInExtendNames" parameterType="com.qiwenshare.file.domain.UserFile" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
<select id="selectFileNotInExtendNames" parameterType="com.qiwenshare.file.domain.UserFile" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
||||||
select * from userfile
|
select * from userfile
|
||||||
left join file on file.fileId = userfile.fileId
|
<include refid="selectByNotExtendName"></include>
|
||||||
where extendName not in
|
|
||||||
<foreach collection="fileNameList" open="(" close=")" separator="," item="fileName" >
|
|
||||||
#{fileName}
|
|
||||||
</foreach>
|
|
||||||
and userId = #{userId}
|
|
||||||
and deleteFlag = 0
|
|
||||||
limit #{beginCount}, #{pageCount}
|
limit #{beginCount}, #{pageCount}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectCountNotInExtendNames" parameterType="com.qiwenshare.file.domain.UserFile" resultType="java.lang.Long">
|
<select id="selectCountNotInExtendNames" parameterType="com.qiwenshare.file.domain.UserFile" resultType="java.lang.Long">
|
||||||
select count(*) from userfile
|
select count(*) from userfile
|
||||||
left join file on file.fileId = userfile.fileId
|
<include refid="selectByNotExtendName"></include>
|
||||||
where extendName not in
|
|
||||||
<foreach collection="fileNameList" open="(" close=")" separator="," item="fileName" >
|
|
||||||
#{fileName}
|
|
||||||
</foreach>
|
|
||||||
and userId = #{userId}
|
|
||||||
and deleteFlag = 0
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user