版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
为了实现OSS私有文件的压缩访问,您可以通过生成带有图片处理参数的签名URL来完成。这样,在访问私有图片时,不仅可以确保安全性,还能在传输前自动对图片进行压缩,从而节省流量。以下是具体的操作步骤和示例代码:
准备环境与权限:
生成带图片处理参数的签名URL:
oss:GetObject
权限。import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import java.net.URL;
import java.util.Date;
public class ImageCompressionExample {
public static void main(String[] args) {
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "your-bucket-name";
String objectName = "exampleobject.jpg"; // 私有图片对象路径
String region = "cn-hangzhou";
// 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 设置图片处理参数,例如压缩
String style = "image/resize,m_fixed,w_300,h_300"; // 压缩并限制宽度和高度
// 生成签名URL,有效期为1小时
Date expiration = new Date(new Date().getTime() + 3600 * 1000); // 有效期1小时
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName);
request.setProcess(style);
request.setExpiration(expiration);
URL signedUrl = ossClient.generatePresignedUrl(request);
System.out.println("Compressed image URL: " + signedUrl.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
}
}
}
image/resize,m_fixed,w_300,h_300
作为压缩参数,表示固定尺寸压缩至宽300px、高300px。根据实际需求,您可以调整这些参数以达到理想的压缩效果。通过以上方法,您可以有效控制OSS私有图片的访问,并在访问前自动对其进行压缩处理,降低流量消耗。