2017-08-22 6 views
0

C'est la première fois que j'utilise amazon s3 et je veux stocker des fichiers pdf que je crée en utilisant itext dans java spring.stocker des fichiers pdf sur amazon s3 en utilisant itext

Le code (hébergé sur l'instance ec2) crée un fichier pdf que je voudrais stocker quelque part. J'explore si amazon s3 peut contenir ces fichiers. Finalement, j'aimerais le récupérer aussi. Cela peut-il être fait en utilisant itext et java spring? Tout exemple serait génial.

+0

juste en utilisant Java, vous pouvez le faire déplacez votre fichier dans S3 –

+0

Google? :) https://javatutorial.net/java-s3-example ou http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpJava.html –

Répondre

4

Pour envoyer des fichiers Amazon s3 Vous devez utiliser la méthode putObject de classe AmazonS3Client comme ceci:

AWSCredentials credentials = new BasicAWSCredentials(appId,appSecret); 
    AmazonS3 s3Client = new AmazonS3Client(credentials); 

    String bucketPath = "YOUR_BUCKET_NAME/FOLDER_INSIDE_BUCKET"; 
    InputStream is = new FileInputStream("YOUR_PDF_FILE_PATH"); 
    ObjectMetadata meta = new ObjectMetadata(); 
    meta.setContentLength(is.available()); 
    s3Client.putObject(new PutObjectRequest(bucketPath,"YOUR_FILE.pdf", is, meta).withCannedAcl(CannedAccessControlList.Private)); 

Et pour obtenir le fichier de S3, vous devez générer une URL pré-signé pour accéder au fichier privé de S3 ou si vos fichiers sont publics, vous pouvez accéder directement à votre fichier en cliquant sur le lien du fichier dans votre navigateur. Le lien pour votre fichier sera disponible dans la console AWS S3.

Nous avons aussi indiqué CannedAccessControlList.Private dans le code de téléchargement ci-dessus qui signifie que nous faisons l'autorisation de fichier en tant que privé Nous avons donc besoin de générer URL presigned pour accéder au fichier comme ceci:

AWSCredentials credentials = new BasicAWSCredentials(appId,appSecret); 
    AmazonS3 s3Client = new AmazonS3Client(credentials); 

    GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest("YOUR_BUCKET_NAME", "FOLDER_INSIDE_BUCKET/YOUR_FILE.pdf"); 

    generatePresignedUrlRequest.setMethod(HttpMethod.GET); 

    Date expiration = Date(); 
    long milliSeconds = expiration.getTime(); 
    milliSeconds += 1000 * 60 * 60; // Add 1 hour. 
    expiration.setTime(milliSeconds); 
    generatePresignedUrlRequest.setExpiration(expiration); 
    URL url = s3client.generatePresignedUrl(generatePresignedUrlRequest); 
    String finalUrl = url.toString(); 
+0

Travailler comme un charme .. :) –