2015-09-18 240 views
1

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

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

请检查下面的代码:

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。 有人可以指导应该做什么?

+0

我冒昧地从帖子中删除了访问和秘密密钥,因为它们看起来很真实。如果我的编辑未被接受或想要自行更改,请通知您。如果他们不是真正的钥匙,请忽略这一点。 –

+0

虽然他们不是真实的,但我仍然明白你的观点。谢谢。 –

回答

3

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

从SDK文档:

参数:bucketName - 现有的存储分区的名称,其中

新对象会被上传。

key - 存储新对象的键。

输入 - 要上传到Amazon S3的数据流。元数据 - 对象元数据。

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

来源:PutObjectRequest constructor detail

你不必在这里指定ACCESSKEY因为你已经与包括接入和密钥的凭据实例化AmazonS3Client对象。

+0

谢谢。这工作。 –

+1

@roger_that:很酷。我很高兴它的工作。尽管这并不是公认的答案。只是说':-P –

+0

哈哈......你去了。 ;) –

相关问题