|
|
|
package com.fr.plugin.file.submit.oss.fun;
|
|
|
|
|
|
|
|
import com.aliyun.oss.HttpMethod;
|
|
|
|
import com.aliyun.oss.OSSClient;
|
|
|
|
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
|
|
|
|
import com.fr.data.NetworkHelper;
|
|
|
|
import com.fr.decision.fun.impl.BaseHttpHandler;
|
|
|
|
import com.fr.plugin.oss.universal.config.OssUniversalConfig;
|
|
|
|
import com.fr.stable.StableUtils;
|
|
|
|
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
|
|
|
|
import com.fr.web.utils.WebUtils;
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.io.PrintWriter;
|
|
|
|
import java.net.URL;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
public class OssDownloadHttpHandler extends BaseHttpHandler {
|
|
|
|
@Override
|
|
|
|
public RequestMethod getMethod() {
|
|
|
|
return RequestMethod.POST;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getPath() {
|
|
|
|
return "/oss/download";
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isPublic() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception {
|
|
|
|
String bucket = NetworkHelper.getHTTPRequestParameter(req, "bucket");
|
|
|
|
String directory = NetworkHelper.getHTTPRequestParameter(req, "directory");
|
|
|
|
String fileName = NetworkHelper.getHTTPRequestParameter(req, "fileName");
|
|
|
|
PrintWriter writer = WebUtils.createPrintWriter(res);
|
|
|
|
writer.write(createDownloadUrl(bucket, directory, fileName));
|
|
|
|
writer.flush();
|
|
|
|
writer.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
private String createDownloadUrl(String bucket, String directory, String fileName) throws Exception {
|
|
|
|
// 创建OSSClient实例。
|
|
|
|
OSSClient ossClient = new OSSClient(
|
|
|
|
OssUniversalConfig.getInstance().getEndPoint(),
|
|
|
|
OssUniversalConfig.getInstance().getAccessKeyId(),
|
|
|
|
OssUniversalConfig.getInstance().getRealAccessKeySecret());
|
|
|
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
calendar.add(Calendar.MINUTE, 1);
|
|
|
|
Date expiration = calendar.getTime();
|
|
|
|
String key = StableUtils.pathJoin(directory, fileName);
|
|
|
|
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucket, key, HttpMethod.GET);
|
|
|
|
// 设置过期时间。
|
|
|
|
request.setExpiration(expiration);
|
|
|
|
// 生成签名URL(HTTP GET请求)。
|
|
|
|
URL signedUrl = ossClient.generatePresignedUrl(request);
|
|
|
|
ossClient.shutdown();
|
|
|
|
return signedUrl.toString();
|
|
|
|
}
|
|
|
|
}
|