文件可上传至阿里云OSS中,也可以从OSS中下载文件。
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

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();
}
}