2015-09-18 237 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

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

相關問題