【问题标题】:Changing file name while uploading to AWS S3 bucket上传到 AWS S3 存储桶时更改文件名
【发布时间】:2015-12-15 06:46:42
【问题描述】:

我正在尝试将 csv 文件上传到 S3 存储桶。代码运行成功,但是当我检查存储桶时,以Access Key 为名称的文件被上传。我必须手动重命名文件以检查其内容。

有没有一种方法可以仅以编程方式重命名文件,或者文件名在上传时不会自动更改?

请检查以下代码:

public class AwsFileUploader {

private static String bucketName = "mybucket";
private static String accessKey = "my-access-key";
private static String secretKey = "my-secret-key";
private static String uploadFileName = "CompressionScore/compression_score_09-04-2015.csv";

public static void main(String[] args) throws IOException {

    AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);

    AmazonS3 s3client = new AmazonS3Client(credentials);

    try {
        System.out.println("Uploading a new object to S3 from a file\n");
        File file = new File(uploadFileName);
        System.out.println(file.getName());   //prints - compression_score_09-04-2015.csv
        s3client.putObject(new PutObjectRequest(bucketName, accessKey, file));
        System.out.println("File successfully uploaded");
    } catch (AmazonServiceException ase) {
        ase.printStackTrace();
    } catch (AmazonClientException ace) {
        ace.printStackTrace();
    }
}

}

理想情况下,存储桶中的文件名称应为compression_score_09-04-2015.csv,而不是AKAJI3EBMILBCWENUSA。 有人可以指导应该做什么吗?

【问题讨论】:

  • 我冒昧地从您的帖子中删除了访问和密钥,因为它们看起来很真实。想让您知道,以防我的编辑不被接受,或者您想自行更改。如果它们不是真正的钥匙,请忽略这一点。
  • 虽然它们不是真实的,但我仍然明白你的意思。谢谢。

标签: java amazon-web-services file-upload amazon-s3 aws-sdk


【解决方案1】:

在 PutObjectRequest 构造函数中,key 参数实际上是上传文件的名称,而不是访问密钥。

来自 SDK 文档:

参数:bucketName - 现有存储桶的名称

将上传新对象。

key - 存储新对象的键。

input - 要上传到 Amazon S3 的数据流。 metadata - 对象元数据。

这至少指定数据流的内容长度 正在上传。

来源:PutObjectRequest constructor detail

您不必在此处指定 accessKey,因为您已经使用包含访问密钥和密钥的凭证实例化了 AmazonS3Client 对象。

【讨论】:

  • @roger_that:酷。我很高兴它奏效了。即使这不是表明这一点的公认答案。只是说:-P
猜你喜欢
  • 2018-04-25
  • 2021-02-07
  • 2017-09-17
  • 2017-10-17
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
相关资源
最近更新 更多