当前位置: 首页 > 知识库问答 >
问题:

如何将pdf保存到Aws s3

景鹏云
2023-03-14

我正在使用PDFbox在我的代码中合并两个pdf文件,然后我想将结果(合并文件)存储到AWS s3桶中。我试图直接将pdf文件存储到s3,而不在我的系统中本地保存,但我无法找到任何方法来做到这一点。

我的代码合并两个pdf-

PDFMergerUtility pdfMergerUtility = new PDFMergerUtility();
String FinalFileName= "Merged.pdf";

pdfMergerUtility.setDestinationFileName(FinalFileName);
pdfMergerUtility.addSource(FileOne);
pdfMergerUtility.addSource(FileTwo);
pdfMergerUtility.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());

//To upload over s3 
String fileNameIWantInS3 = "myfile.pdf";
s3.putObject(BucketName, fileNameIWantInS3, ??); //Stuck here

我不想在我的服务器上制作一个文件,而是想直接把它放在s3上,我如何修改这个代码来上载Merged.pdf到s3桶。上面的代码只是我卡住的一部分。我使用File.createTempFile创建的文件一和文件二。

整个想法是合并两个文件,并将最终文件放在s3上,而无需在服务器上进行物理复制!请帮助。

共有1个答案

百里锋
2023-03-14

要上传文件,您需要传递字节数组或输入流,以下使用字节数组:

public void saveFileToS3(String yourBucketName,String pathAws,PDFDocument yourPdf_doc, String folderName) {
    AmazonS3 s3Client = AwsUtil.s3Authentication();
    PutObjectRequest objectRequest = PutObjectRequest.builder()
      .bucket(yourBucketName)
      .key(folderName+"/"+pathAws)//pathAws: path on S3 where the file will be saved
      .build();
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    PdfWriter.getInstance(yourPdf_doc, byteArrayOutputStream);
    //convert it into a byte array
    byte[] pdfBytes = byteArrayOutputStream.toByteArray()  
    CompletableFuture<PutObjectResponse> future = 
    s3Client.putObject(objectRequest,AsyncRequestBody.fromBytes(pdfBytes));
    future.whenComplete((resp, err) -> {
      try {
        if (resp != null) {
          System.out.println("Object uploaded. Details: " + resp);
        } else {
          err.printStackTrace();
        }
      } finally {
        s3Client.close();
      }
    });    
    future.join();   
}
 类似资料:
  • 问题内容: 绘图模块 主模块 我想将所有图plot1,plot2,plot3保存到一个PDF文件中。有什么办法可以实现?我不能在主模块中包含该功能。 有一个名为的函数,但只有将其与绘图模块一起放置时,该函数才起作用。还有其他方法可以实现吗? 问题答案: 没关系,有办法做到这一点。 ------绘图模块------ ----- mainModule ---- ----- mainModule ---

  • 下面的代码在内存中创建了一个文件。 我想把那个pdf文件保存在磁盘上以便查看。我将如何在python中实现它?

  • 我创建了一个简单的应用程序,裁剪图像。现在我想保存这个图像到消防基地。 如何将此图像保存到Firebase。我尝试了很多教程,但都没有成功。请用简单的代码验证。

  • 是的。这是这个问题的重复。然而,答案是错误的和误导性的。答案建议将密钥写入一个其他应用程序可以访问该文件的文件。如果我没看错的话,keystore的目的是生成并存储只能被你的app看到的私钥,所以我甚至不确定为什么答案在那个问题中被接受了。 另一个问题是关于加密和解密的,但并不是真正关于将数据保存到密钥存储区的问题。 好的,所以我发现一旦您调用就可以自动生成密钥,就像这个应用程序中演示的那样。但我

  • 问题内容: 我试图使用在stackoverflow上发现的不同方法来保存.pdf文件,但是,我总是会损坏它。当我使用记事本打开损坏的文件时,我得到以下信息: 后来,我尝试使用@BalusC提供的答案从浏览器中保存文件。这个解决方案非常有帮助:我能够摆脱这些问题。但是,它也会产生损坏的.pdf。但是当我用记事本打开它时,它是完全不同的。但是,不再有登录问题: 我还有什么其他选择? PS:当我尝试使用

  • 问题内容: 我想将HtmlUnit cookie保存到一个文件,然后在下一次运行时从该文件中加载它们。我怎样才能做到这一点?谢谢。 问题答案: