You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.5 KiB
67 lines
2.5 KiB
6 years ago
|
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;
|
||
6 years ago
|
import com.fr.decision.fun.HttpHandler;
|
||
|
import com.fr.decision.fun.impl.BaseHttpHandler;
|
||
6 years ago
|
import com.fr.plugin.file.submit.oss.conf.FileSubmitOssServerConfig;
|
||
|
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;
|
||
|
|
||
6 years ago
|
public class OssDownloadHttpHandler extends BaseHttpHandler {
|
||
6 years ago
|
@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(
|
||
|
FileSubmitOssServerConfig.getInstance().getEndPoint(),
|
||
|
FileSubmitOssServerConfig.getInstance().getAccessKeyId(),
|
||
|
FileSubmitOssServerConfig.getInstance().getAccessKeySecret());
|
||
|
|
||
|
Calendar calendar = Calendar.getInstance();
|
||
|
calendar.add(Calendar.MINUTE, 1);
|
||
|
Date expiration = calendar.getTime();
|
||
|
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucket, StableUtils.pathJoin(directory, fileName), HttpMethod.GET);
|
||
|
// 设置过期时间。
|
||
|
request.setExpiration(expiration);
|
||
|
// 生成签名URL(HTTP GET请求)。
|
||
|
URL signedUrl = ossClient .generatePresignedUrl(request);
|
||
|
ossClient.shutdown();
|
||
|
return signedUrl.toString();
|
||
|
}
|
||
|
}
|