如何从s3 url获取(前n个字节)文件

 Mini_敏児 发布于 2023-01-06 16:37

这是一个基本问题,不是很先进,但我有点卡住了.

我试图获取在s3上托管的文件的前n个字节.我理解这个问题的基本构建块.我知道如何获取字节.以下是AmazonS3的一个示例

GET /example-object HTTP/1.1
Host: example-bucket.s3.amazonaws.com
x-amz-date: Fri, 28 Jan 2011 21:32:02 GMT
Range: bytes=0-9
Authorization: AWS AKIAIOSFODNN7EXAMPLE:Yxg83MZaEgh3OZ3l0rLo5RTX11o=
Sample Response with Specified Range of the Object Bytes  

现在我有一个s3网址,像这样:

http://s3.amazonaws.com/bucket-name/foo/1/2/3/4/file.jpg

如何将此翻译成文档中指定的请求?我知道这是补救措施,但是我被卡住了,这感觉有些不透明,尽管那可能只是我.

请帮我解构一下s3 url到GET请求示例的组件.感谢帮助!

更新:如果我要使用GetObjectRequestapi,我将使用什么用于存储桶和构造函数中的键?

UPDATE2:换句话说就是这么简单

// modelled after http://s3.amazonaws.com/foo/
private String s3UrlToBucket(String s3Url)
{
    Pattern pattern = Pattern.compile("^https?://[^/]+/([^/]+)/.*$");
    Matcher matcher = pattern.matcher(s3Url);
    if(matcher.find())
    {
        return matcher.group(1);
    }
    return null;
}

// modelled after http://s3.amazonaws.com/foo/1/2/3/4.jpg
private String s3UrlToKey(String s3Url)
{
    Pattern pattern = Pattern.compile("^https?://[^/]+/[^/]+/(.*)$");
    Matcher matcher = pattern.matcher(s3Url);
    if(matcher.find())
    {
        return matcher.group(1);
    }
    return null;
}

更新3:你能告诉我钥匙是什么意思吗???

1 个回答
  • 如果您使用AWS SDK for Java,则只需在GetObjectRequest上设置范围.这是一个代码示例:

    AmazonS3Client s3Client = new AmazonS3Client();
    GetObjectRequest request = new GetObjectRequest("bucket-name", "foo/1/2/3/4/file.jpg");
    request.withRange(0, numberOfBytesToGet);
    S3Object s3Object = s3Client.getObject(request);
    //s3Object.getObjectContent() has a stream to your object.
    

    2023-01-06 16:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有