Commit a2fc5cf3 by wangdayewjf

add

parent 2cf73fbe
package com.ydl.auth.inf;
import com.ydl.common.dto.BaseDtoResponse;
import java.util.List;
/**
* @program ydl-auth
* @description: ComOssFacade
* @author: wangjianfeng
* @create: 2020/03/03 18:30
*/
public interface ComOssFacade {
public BaseDtoResponse<String> getTemporaryUrlByOriginalUrl(String originalUrl);
public BaseDtoResponse<List<String>> getBathTemporaryUrlByOriginalUrl(List<String> originalUrls);
}
package com.ydl.auth.service.beans;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
* @program ydl-auth
* @description: ossProperties
* @author: wangjianfeng
* @create: 2020/03/03 18:19
*/
@Component
@Data
public class OssProperties implements Serializable {
@Value("${alioss.key.accessKeyId}")
private String aliossKeyAccessKeyId;
@Value("${alioss.key.accessKeySecret}")
private String aliossKeyAccessKeySecret;
@Value("${alioss.endpoint}")
private String aliossEndpoint;
@Value("${alioss.bucketName}")
private String aliossBucketName;
@Value("${yp.host}")
private String ypHost;
@Value("${yp.secret}")
private String ypSecret;
@Value("${qnoss.key.accessKey}")
private String qnossKeyAccessKey;
@Value("${qnoss.key.secretKey}")
private String qnossKeySecretKey;
@Value("${alioss.host}")
private String aliossHost;
@Value("${qnoss.key.domainOfBucket}")
private String qnossKeyDomainOfBucket;
}
package com.ydl.auth.service.enums;
public enum YunYMEnum {
QN_STATIC1(0,"static.ydlcdn.com"),
QN_VIDEEO(1,"video.ydlcdn.com"),
QN_STATIC2(2,"static.yidianling.com"),
QN_HAOSHI99(3,"www.haoshi99.com"),
YP_IMG(4,"img.ydlcdn.com"),
YP_IMG2(5,"img.ydlcdn.com"),
YP_M(6, "m.haoshi99.com"),
AL_IMG(7,"ydlimg.oss-cn-shanghai.aliyuncs.com"),
AL_FILE(8,"ydlfile.oss-cn-shanghai.aliyuncs.com"),
AL_REDORD(9,"ydl-recording.oss-cn-shanghai.aliyuncs.com"),
QN_SELF(10,"qn.wangdaye.net"),
YP_SELF(11,"beans.wangdaye.net"),
AL_SELF(12,"alioss.wangdaye.net");
private Integer key;
private String value;
private YunYMEnum(Integer key, String value) {
this.key = key;
this.value = value;
}
public Integer key() {
return key;
}
public Integer getKey() {
return key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
package com.ydl.auth.service.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import com.qiniu.util.Auth;
import com.ydl.auth.service.beans.OssProperties;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;
import java.io.Serializable;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @program ydl-auth
* @description: OssUtil
* @author: wangjianfeng
* @create: 2020/03/03 19:12
*/
@Data
@Component
public class OssUrlUtil implements Serializable {
@Autowired
private OssProperties ossProperties;
public String getAliyTemporaryUrl(String host,String key,Long expressedTime){
String tagetUrl = "";
List<String> contentList = getAliyContentList(key);
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(ossProperties.getAliossEndpoint(),
ossProperties.getAliossKeyAccessKeyId(), ossProperties.getAliossKeyAccessKeySecret());
for (String objectName:contentList) {
Date expiration = new Date(System.currentTimeMillis() + expressedTime);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
String replaceStr = ossProperties.getAliossBucketName()+ossProperties.getAliossEndpoint()
.replace("http://","")
.replace("https://","");
URL url = ossClient.generatePresignedUrl(ossProperties.getAliossBucketName(), objectName, expiration);
String tag_url = url.toString().replace(replaceStr,host);
System.out.println("aliyun 生成的临时url为 "+tag_url);
tagetUrl = tag_url;
}
// 关闭OSSClient。
ossClient.shutdown();
return tagetUrl;
}
public String getYpyTemporaryUrl(String host,String key,Long expressedTime){
Long currentTime = System.currentTimeMillis();
Long etime = currentTime + expressedTime;
String urlString = "/"+key;
String sign = DigestUtils.md5DigestAsHex( (ossProperties.getYpSecret()+ "&"+ etime+"&"+ urlString).getBytes() );
Integer startIndex = sign.length()/2-4;
Integer endIndex = sign.length()/2+4;
String temStr = sign.substring(startIndex, endIndex);
String _upt = temStr + etime;
String requestUrl = host +urlString+"?_upt="+_upt;
return requestUrl;
}
public String getQnyTemporaryUrl(String host,String key,Long expressedTime) {
// 文档url https://developer.qiniu.com/kodo/sdk/1239/java#private-get
String finalUrl = "";
try {
String accessKey = ossProperties.getQnossKeyAccessKey();
String secretKey = ossProperties.getQnossKeySecretKey();
String fileName = key;
String domainOfBucket = host;
String encodedFileName = URLEncoder.encode(fileName, "utf-8").replace("+", "%20");
String publicUrl = String.format("%s/%s", domainOfBucket, encodedFileName);
Auth auth = Auth.create(accessKey, secretKey);
finalUrl = auth.privateDownloadUrl(publicUrl, expressedTime);
System.out.println("七牛云url " +finalUrl);
return finalUrl;
} catch (Exception e) {
e.printStackTrace();
}
return finalUrl;
}
public List<String> getAliyContentList(String KeyPrefix){
List<String> result = new ArrayList<>();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(ossProperties.getAliossEndpoint(),
ossProperties.getAliossKeyAccessKeyId(), ossProperties.getAliossKeyAccessKeySecret());
// 列举文件。 如果不设置KeyPrefix,则列举存储空间下所有的文件。KeyPrefix,则列举包含指定前缀的文件。
ObjectListing objectListing = ossClient.listObjects(ossProperties.getAliossBucketName(),KeyPrefix);
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
for (OSSObjectSummary s : sums) {
result.add(s.getKey());
System.out.println("\t" + s.getKey());
}
// 关闭OSSClient。
ossClient.shutdown();
return result;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment