简体   繁体   English

无需SDK的Amazon S3存储桶子对象REST和Java

[英]Amazon S3 bucket sub objects REST and Java without SDK

I want to get a list of objects and folders that are in a Bucket in Amazon S3 but I can't, I should not use Amazon S3 SDK. 我想要获取Amazon S3的存储桶中的对象和文件夹的列表,但我不能,我不应该使用Amazon S3 SDK。

It's important not to use SDK and only with Rest and Java should I sent a Request and then receive a Response. 重要的是不要使用SDK,只有在Rest和Java上才能发送请求,然后接收响应。 I have a method like this : 我有这样的方法:

public String BucketSubList(String strPath) throws Exception {

    String answer = null;

    // S3 timestamp pattern.
    String fmt = "EEE, dd MMM yyyy HH:mm:ss ";
    SimpleDateFormat df = new SimpleDateFormat(fmt, Locale.US);
    df.setTimeZone(TimeZone.getTimeZone("GMT"));

    // Data needed for signature
    String method = "GET";
    String contentMD5 = "";
    String contentType = "";
    String date = df.format(new Date()) + "GMT";
    String bucket = "/" + strPath + "/";

    // Generate signature
    StringBuffer buf = new StringBuffer();
    buf.append(method).append("\n");
    buf.append(contentMD5).append("\n");
    buf.append(contentType).append("\n");
    buf.append(date).append("\n");
    buf.append(bucket);
    // try {
    String signature = sign(buf.toString());

    // Connection to s3.amazonaws.com
    URL url = new URL("http", "s3.amazonaws.com", 80, bucket);

    HttpURLConnection httpConn = null;
    httpConn = (HttpURLConnection) url.openConnection();
    httpConn.setDoInput(true);
    httpConn.setDoOutput(true);
    httpConn.setUseCaches(false);
    httpConn.setDefaultUseCaches(false);
    httpConn.setAllowUserInteraction(true);
    httpConn.setRequestMethod(method);
    httpConn.setRequestProperty("Date", date);
    // httpConn.setRequestProperty("Content-Type", "text/plain");

    String AWSAuth = "AWS " + keyId + ":" + signature;
    httpConn.setRequestProperty("Authorization", AWSAuth);

    // Send the HTTP PUT request.
    int statusCode = httpConn.getResponseCode();
    System.out.println(statusCode);
    if ((statusCode / 100) != 2) {
        // Deal with S3 error stream.
        InputStream in = httpConn.getErrorStream();
        String errorStr = getS3ErrorCode(in);
        System.out.println("Error: " + errorStr);
    } else {
        answer = "";
        // System.out.println("Bucket listed successfully");
        InputStream inst = httpConn.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(inst));
        String decodedString;
        while ((decodedString = in.readLine()) != null) {
            answer += decodedString;
            System.out.println(answer);
        }
        in.close();
    }

    return answer;
}

Without knowing what your problem is, i just can give you the link to the AWS S3 Rest API . 不知道您的问题是什么,我只能为您提供指向AWS S3 Rest API的链接。

This method does what you want. 此方法可以满足您的需求。

I hope this might help you. 希望对您有所帮助。

Otherwise please give us some more information about your problem. 否则,请向我们提供有关您的问题的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Amazon S3:使用 Java 开发工具包更改存储桶策略 - Amazon S3: Change bucket policy with Java SDK Amazon s3 只为一个桶返回 1000 个条目,而为另一个桶返回所有条目(使用 java sdk)? - Amazon s3 returns only 1000 entries for one bucket and all for another bucket (using java sdk)? 使用Java SDK列出Amazon S3中的所有对象 - List all objects in Amazon S3 using Java SDK 将 Java 对象存储到 Amazon S3 存储桶 - Store Java object to Amazon S3 bucket 使用 AWS SDK 为 Java 创建 Amazon S3 存储桶:线程“主”java.lang.NoClassDefFoundError 中的异常 - Creating an Amazon S3 bucket Using the AWS SDK for Java : Exception in thread "main" java.lang.NoClassDefFoundError 如何使用 AWS Java SDK for S3 查询 AWS S3 存储桶以匹配对象(文件)名称 - how to query AWS S3 bucket for matching objects(files) names using AWS Java SDK for S3 将文件上传到 Amazon S3 存储桶。 使用适用于 Java v2 的 AWS 开发工具包 - Issuing uploading file to Amazon S3 Bucket. using the AWS SDK for Java v2 使用适用于Amazon S3存储桶的Java SDK下载大量文件 - Download a Large Number of Files Using the Java SDK for Amazon S3 Bucket 亚马逊 sdk 从 spring 启动 Z93F725A074233D1C889F4F48B 中的 s3 存储桶下载大型 zip 文件 - Amazon sdk dowload large zip file from s3 bucket in spring boot java 使用java sdk在客户端使用联邦用户凭据(或IAM用户)在一次调用中列出亚马逊s3存储桶中可用的所有对象/文件 - Listing out all objects/files available on amazon s3 bucket in single call using federated user credentials(or IAM user) on client side by java sdk
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM