我正在生成预先签名的网址,但由于*.s3.amazonaws证书,因此对于具有句点和SSL的存储桶名称存在问题,如下所述:http://shlomoswidler.com/2009/08/amazon-s3-gotcha-using- 虚拟host.html
有没有办法生成具有以下格式的网址?:http: //s3.amazonaws.com/bucket.name/key
我没有在API中看到一个选项.我猜我可以通过重新排列网址来"手动"完成它,但如果没有必要,我宁愿避免黑客入侵.
基于迈克尔的答案,这里是我现在使用的代码:
public static URL bucketNameAfterS3Url(URL url) {
int index = url.getHost().indexOf("s3");
String host = url.getHost().substring(index);
String bucket = url.getHost().substring(0, index - 1);
URL toUse;
try {
toUse = new URL(url.getProtocol(), host, url.getPort(), '/' + bucket + url.getFile());
} catch (MalformedURLException e) {
}
return toUse;
}
Run Code Online (Sandbox Code Playgroud) amazon-s3 ×1