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.
66 lines
2.4 KiB
66 lines
2.4 KiB
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(); |
|
} |
|
}
|
|
|