代码之家  ›  专栏  ›  技术社区  ›  ksernow

使用itext在amazon s3上存储pdf文件

  •  0
  • ksernow  · 技术社区  · 7 年前

    这是我第一次使用amazon s3,我想存储我在java spring中使用itext创建的pdf文件。

    1 回复  |  直到 7 年前
        1
  •  6
  •   Java wanna bee    5 年前

    要将文件上载到Amazon s3,您需要使用 putObject AmazonS3Client类的方法如下:

        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));
    

    要从S3获取文件,您需要生成一个预签名URL来访问S3中的私有文件,或者如果您的文件是公共文件,那么您可以通过点击浏览器中的文件链接直接访问您的文件,您的文件链接将在AWS S3控制台中可用。

    我们还指定了 CannedAccessControlList.Private

      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 = new 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();