Browse Source

oss模块添加下载功能

dev
yujintao 6 years ago
parent
commit
7d36e96371
  1. 3
      esua-epdc/epdc-gateway/src/main/resources/application.yml
  2. 2
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml
  3. 60
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/cloud/AliyunCloudStorageService.java
  4. 27
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java

3
esua-epdc/epdc-gateway/src/main/resources/application.yml

@ -181,8 +181,7 @@ renren:
- /activiti/editor-app/**
- /message/sms/sendCode #发送验证码
- /heart/**
- /oss/file/download
epdc:

2
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml

@ -14,7 +14,7 @@
<properties>
<qiniu.version>[7.2.0, 7.2.99]</qiniu.version>
<aliyun.oss.version>2.8.3</aliyun.oss.version>
<aliyun.oss.version>3.5.0</aliyun.oss.version>
<aliyun.core.version>3.2.2</aliyun.core.version>
<qcloud.cos.version>5.4.4</qcloud.cos.version>
<fastdfs.version>1.26.2</fastdfs.version>

60
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/cloud/AliyunCloudStorageService.java

@ -1,21 +1,23 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
package com.elink.esua.epdc.cloud;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
/**
* 阿里云存储
@ -24,7 +26,7 @@ import java.io.InputStream;
*/
public class AliyunCloudStorageService extends AbstractCloudStorageService {
public AliyunCloudStorageService(CloudStorageConfig config){
public AliyunCloudStorageService(CloudStorageConfig config) {
this.config = config;
}
@ -40,7 +42,7 @@ public class AliyunCloudStorageService extends AbstractCloudStorageService {
try {
client.putObject(config.getAliyunBucketName(), path, inputStream);
client.shutdown();
} catch (Exception e){
} catch (Exception e) {
throw new RenException(ModuleErrorCode.OSS_UPLOAD_FILE_ERROR, e, "");
}
@ -56,4 +58,46 @@ public class AliyunCloudStorageService extends AbstractCloudStorageService {
public String uploadSuffix(InputStream inputStream, String suffix) {
return upload(inputStream, getPath(config.getAliyunPrefix(), suffix));
}
/**
* 下载阿里云oss服务器上的文件
*
* @param url 完整的访问连击
* @param response
* @return void
* @author work@yujt.net.cn
* @date 2019/10/24 14:43
*/
public void download(String url, HttpServletResponse response) throws IOException {
OSS ossClient = new OSSClientBuilder().build(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret());
String objectName = url.replace(config.getAliyunDomain().concat("/"), "");
String filename = objectName.substring(objectName.lastIndexOf("/") + 1);
// 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
OSSObject ossObject = ossClient.getObject(config.getAliyunBucketName(), objectName);
// 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
InputStream content = ossObject.getObjectContent();
if (null != content) {
response.setCharacterEncoding("UTF-8");
response.setHeader("Pragma", "No-Cache");
response.setHeader("Cache-Control", "No-Cache");
response.setDateHeader("Expires", 0);
response.setContentType("application/msexcel; charset=UTF-8");
// 设定输出文件头
response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
byte[] buf = new byte[1024];
int L;
while ((L = content.read(buf)) != -1) {
toClient.write(buf, 0, L);
}
content.close();
toClient.flush();
toClient.close();
ossClient.shutdown();
}
}
}

27
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java

@ -8,6 +8,8 @@
package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.cloud.AbstractCloudStorageService;
import com.elink.esua.epdc.cloud.AliyunCloudStorageService;
import com.elink.esua.epdc.commons.tools.annotation.LogOperation;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
@ -33,11 +35,17 @@ import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;
import sun.misc.BASE64Decoder;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.Map;
@ -112,6 +120,25 @@ public class OssController {
return ossService.afterUpload(url, file.getSize());
}
/**
* 下载阿里云oss服务器上的文件
*
* @param url 完整的访问连击
* @param response 浏览器返回
* @return void
* @author work@yujt.net.cn
* @date 2019/10/24 14:43
*/
@GetMapping("download")
public void download(String fileUrl, HttpServletResponse response) throws Exception {
AbstractCloudStorageService build = OssFactory.build();
if (build instanceof AliyunCloudStorageService) {
AliyunCloudStorageService aliyunCloudStorageService = (AliyunCloudStorageService) build;
aliyunCloudStorageService.download(fileUrl, response);
}
}
@DeleteMapping
@ApiOperation(value = "删除")
@LogOperation("删除")

Loading…
Cancel
Save