【问题标题】:Upload a file to s3 bucket with REST API使用 REST API 将文件上传到 s3 存储桶
【发布时间】:2018-07-30 15:47:09
【问题描述】:

使用 S3 SDK 执行此操作很简单。但是想使用 S3 REST API(阅读一些优点)。

我已经阅读了 S3 API 文档,发现很难使用它进行编码。我对这种类型的编码完全陌生,其中它使用请求参数、请求标头、响应标头、授权、错误代码、ACL 等。它还提供了示例示例,但找不到如何使用这些示例并进行编码的方法。

任何人都可以帮助我从哪里开始和结束,以便我可以使用 API 为 S3 上的所有 CRUD 操作编写代码。上传图片文件的例子有助于我更好地理解。

【问题讨论】:

  • 处理 S3 API 是一件令人头疼的事情。如果可能,我建议使用 jets3t 库。

标签: java amazon-s3


【解决方案1】:

我在下面放了一些基本的代码 sn-ps,你可以很容易地集成到你的代码中。

获取s3客户端:

private AmazonS3 getS3Client() {
    AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(credentials)
            .withAccelerateModeEnabled(true).withRegion(Regions.US_EAST_1).build();
    return s3Client;
}

上传文件:

public void processOutput(FileServerDTO fileRequest) {

    try {
        AmazonS3 s3Client = getS3Client();
        s3Client.putObject(fileRequest.getBucketName(), fileRequest.getKey(), fileRequest.getFileContent(), null);
    } catch (Exception e) {
        logger.error("Exception while uploading file" + e.getMessage());
        throw e;
    }
}

下载文件:

public byte[] downloadFile(FileServerDTO fileRequest) {
    AmazonS3 s3Client = getS3Client();
    S3Object s3object = s3Client.getObject(new GetObjectRequest(fileRequest.getBucketName(), fileRequest.getKey()));
    S3ObjectInputStream inputStream = s3object.getObjectContent();
    try {
        return FileCopyUtils.copyToByteArray(inputStream);
    } catch (Exception e) {
        logger.error("Exception while downloading file" + e.getMessage());
    }
    return null;
}

FileServerDTO 包含与文件信息相关的基本属性。 您可以轻松地在服务中使用这些 util 方法。

【讨论】:

  • sCom: 请参考我提供给@JOE DAI的cmets
【解决方案2】:

如果您使用 S3 服务,您将更好地了解 S3 服务的工作原理,这里有一些示例如何使用 S3 服务从 S3 服务器创建上传删除文件:-

1) how to use Amazon’s S3 storage with the Java API

2)S3 Docs

有一个简短的解释它是如何工作的。

【讨论】:

  • Ravindra:请参考我提供给@JOE DAI的cmets
猜你喜欢
  • 2021-08-16
  • 2018-03-18
  • 1970-01-01
  • 2018-04-25
  • 2018-03-25
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多