小编Sha*_*esh的帖子

有没有办法使用分段上传(Java高级API)将使用“java.util.zip”提取的zip文件上传到AWS-S3

需要使用流的分段上传方式将大文件上传到AWS S3,而不是使用lambda的/tmp。文件已上传但未完全上传。

在我的情况下,zip中每个文件的大小无法预测,可能一个文件的大小可达1 Gib。所以我使用ZipInputStream从S3读取,我想将其上传回S3。因为我正在研究lambda ,由于文件太大,我无法将文件保存在 lambda 的 /tmp 中。因此我尝试使用 S3 分段上传直接读取并上传到 S3,而不保存在 /tmp 中。但我遇到了一个问题,文件没有完全写入。我怀疑文件每次都被覆盖。请查看我的代码并提供帮助。

public void zipAndUpload {
    byte[] buffer = new byte[1024];
    try{
    File folder = new File(outputFolder);
    if(!folder.exists()){
        folder.mkdir();
    }

    AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();  
    S3Object object = s3Client.getObject("mybucket.s3.com","MyFilePath/MyZip.zip");

    TransferManager tm = TransferManagerBuilder.standard()
            .withS3Client(s3Client)
            .build();

    ZipInputStream zis = 
        new ZipInputStream(object.getObjectContent());
    ZipEntry ze = zis.getNextEntry();

    while(ze!=null){    
    String fileName = ze.getName();
    System.out.println("ZE " + ze + " : " + fileName);

          File newFile = new File(outputFolder + File.separator + fileName);
          if …
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 zipinputstream

4
推荐指数
1
解决办法
2331
查看次数

标签 统计

amazon-s3 ×1

java ×1

zipinputstream ×1