2017-07-14 33 views
-1

我刚刚使用AWS的S3,并且必须使用putObject(bucket name, key , string that will become the file)方法上传文件(使我的生活变得更加轻松)。我想知道是否可以更改扩展名,因为当我使用这种方法时,上传的文件总是有'.txt'扩展名,但我需要它为'.csv'。AWS S3在使用putObject(字符串,字符串,字符串)时更改文件扩展名

的代码非常简单:

public void uploadStringFile(String bucket,String username, String fileString) { 
    s3Client.putObject(bucket, username, fileString); 
} 

awsS3Service.uploadStringFile("ati-teste",fileName, sb.toString()); 
+0

对不起,我忘了提我使用的Java。 – GaboSampaio

+2

在[AmazonS3Client](http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3Client.html)类中没有这样的方法。这是您用来与S3交互的主要类。那么'uploadStringFile'从哪里来? – stdunbar

+0

你说得对,我很抱歉。我忘了我提供了一个接口来将S3集成到我现有的项目中。我实际上使用putObject方法。你使用3个字符串作为输入,最后一个是文件本身。 – GaboSampaio

回答

0

这是你的助手uploadStringFile方法签名:

public void uploadStringFile(String bucket,String username, String fileString) 

的参数名称是可能产生误导。我们看到,代码委托给AmazonS3#putObject(String, String, String)

s3Client.putObject(bucket, username, fileString); 

根据它的JavaDocs,参数是:

参数:

bucketName - 桶的名称将新对象。

key - 创建对象的关键。

内容 - 要编码的字符串

公告不存在username。相反,第二个参数是目标key。因此,你可以简单地传递你想要的第二个参数中的任何键,这就是它在S3中的位置。如果您已经有了“test1.txt”这样的基本文件名,那么在调用S3方法之前,您可以使用基本的String操作将其更改为“test1.csv”。

注意,你也可能会发现更方便使用S3 API的其他变体,在形式,如AmazonS3#putObject(String, String, File)AmazonS3#putObject(PutObjectRequest)这样的:

s3Client.putObject(new PutObjectRequest() 
     .withBucketName(bucket) 
     .withKey(key) 
     .withFile(inputFileObject)); 
+0

是的第二个参数我在我的环境中使用用户名becaus我将使用用户名+日期,因为它是某种记录我上传到S3。我试过将名称设置为exemple.csv,它似乎不起作用,它最终成为“exemple.csv.txt”。一切工作正常,唯一的问题是它保存为txt而不是csv。感谢我使用字符串的帮助,因为我从列表中获取数据并将其变为Sring。对不起,如果这个问题不是很好的想法或足够澄清。 – GaboSampaio