2017-05-05 11 views
0

javaファイルの選択によって複数のファイルをAmazon S3バケットにアップロードしたいと思います。そのために、次のコードを使用しています。このコードはファイルをs3にアップロードできますが、次回は別のファイルをアップロードすると前のファイルが置き換えられます。私はそれがString key = "squre.jpg"によって引き起こされたことを知っています。コードで私の質問は、前のファイルを置き換えずに複数のファイルをアップロードする方法です。ありがとうございました。あなたのコードからjava filechooserを使用してamazon s3バケットに複数のファイルをアップロード

imageUpload.setOnMouseClicked(new EventHandler<MouseEvent>() { 
     @Override 
     public void handle(MouseEvent event) { 
      FileChooser fileChooser=new FileChooser(); 
      fileChooser.setInitialDirectory(new File("c:\\")); 
      fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("JPG Images","*.jpg"), 
        new FileChooser.ExtensionFilter("JPEG Images","*.jpeg"), 
        new FileChooser.ExtensionFilter("PNG Images","*.png")); 
      File file=fileChooser.showOpenDialog(null); 

      if (file!=null){ 
       try { 

AWSCredentials Credentials = new BasicAWSCredentials(
      "AWSAccessKeyId", 
      "AWSSecretKey"); 

    AmazonS3Client amazonS3Client = new AmazonS3Client(Credentials); 
    String bucketName = "awsimagetrading"; 
    String key = "squre.jpg"; 
        System.out.println("Uploading a new object to S3 from a file\n"); 
        AmazonS3 s3client = new AmazonS3Client(Credentials); 
        s3client.putObject(new PutObjectRequest(bucketName,key,file)); 
        URL url = amazonS3Client.generatePresignedUrl(bucketName,key,Date.from(Instant.now().plus(5,ChronoUnit.MINUTES))); 
        System.out.println(url); 
        //label.setText(url.toString()); 

       } catch (AmazonClientException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }); 
+0

アップロードごとに異なるキーを使用できないのはなぜですか?または私はここに何かを逃していますか? – GhostCat

答えて

0

あなたはファイルチューザのopenMultipleDialogを使用するようにして、あなたは、ファイルの名前(file.getName())にキーを設定することができます必要があるように見えます。変更されたコードは次のとおりです。

imageUpload.setOnMouseClicked(new EventHandler<MouseEvent>() { 
     @Override 
     public void handle(MouseEvent event) { 
      FileChooser fileChooser=new FileChooser(); 
      fileChooser.setInitialDirectory(new File("c:\\")); 
      fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("JPG Images","*.jpg"), 
        new FileChooser.ExtensionFilter("JPEG Images","*.jpeg"), 
        new FileChooser.ExtensionFilter("PNG Images","*.png")); 

      List<File> selectedFiles = fileChooser.showOpenMultipleDialog(null); 
      if (selectedFiles != null) { 
       for (File file : selectedFiles) { 
        try { 

         AWSCredentials Credentials = new BasicAWSCredentials(
           "AWSAccessKeyId", 
           "AWSSecretKey"); 

         AmazonS3Client amazonS3Client = new AmazonS3Client(Credentials); 
         String bucketName = "awsimagetrading"; 
         String key = file.getName(); 
         System.out.println("Uploading a new object to S3 from a file\n"); 
         AmazonS3 s3client = new AmazonS3Client(Credentials); 
         s3client.putObject(new PutObjectRequest(bucketName,key,file)); 
         URL url = amazonS3Client.generatePresignedUrl(bucketName,key,Date.from(Instant.now().plus(5,ChronoUnit.MINUTES))); 
         System.out.println(url); 
         //label.setText(url.toString()); 

        } catch (AmazonClientException e) { 
         e.printStackTrace(); 
        } 
       } 
     } 
    }); 
+0

ありがとうございました。それは今働いている.. @jshcode – Sony

関連する問題