【问题标题】:Multiple Uploads of unknown number of files to S3 with JetS3t使用 JetS3t 将未知数量的文件多次上传到 S3
【发布时间】:2010-11-15 13:16:30
【问题描述】:

jetS3t 的示例代码示例如下: 如果我不知道要下载的文件数怎么办 开始? 例如,S3 中带有缩略图的应用程序和客户端应用程序 用户滚动浏览缩略图列表。

将对象下载到本地文件

多线程服务提供下载方法 一次有多个对象,但是 要使用它,您必须先准备好放置 与每个对象关联的数据。 将这些数据放在文件中最明显的地方,所以 让我们看一个例子 将对象数据下载到文件中。 要将我们的对象下载到文件中,我们首先必须创建一个 下载包类 每个对象。这个类是一个简单的容器,它只是 将对象与 文件,对象的数据将写入该文件。 为每个对象创建一个 DownloadPackage,以关联 带有输出文件的对象。

 DownloadPackage[] downloadPackages = new DownloadPackage[5];
   downloadPackages[0] = new DownloadPackage(objects[0],
       new File(objects[0].getKey()));
   downloadPackages[1] = new DownloadPackage(objects[1],
       new File(objects[1].getKey()));
   downloadPackages[2] = new DownloadPackage(objects[2],
       new File(objects[2].getKey()));
   downloadPackages[3] = new DownloadPackage(objects[3],
       new File(objects[3].getKey()));
   downloadPackages[4] = new DownloadPackage(objects[4],
       new File(objects[4].getKey()));

   // Download the objects.
   simpleMulti.downloadObjects(bucket, downloadPackages);
   System.out.println("Downloaded objects to current working directory");

对这种情况有什么建议吗? 提前致谢

安东尼

【问题讨论】:

    标签: java amazon-s3 jets3t


    【解决方案1】:

    您可以列出您从中下载的存储桶中的对象,并根据您定义的规则过滤键。然后就可以开始分段下载了。

    从存储桶中获取密钥:


    public List getFilesList(String accessKey, String secretKey ,String bucketName ,String directoryPathRelativeToBucket) { List keys = new ArrayList(); org.jets3t.service.model.S3Object[] objects = new org.jets3t.service.model.S3Object[]{}; try { // Create a credentials object and service to access S3 account org.jets3t.service.security.AWSCredentials myCredentials = new org.jets3t.service.security.AWSCredentials(accessKey, secretKey); S3Service service = new RestS3Service(myCredentials); objects = service.listObjects(bucketName ,directoryPathRelativeToBucket, null); log.info("got bucket listing for bucket[" + bucketName + "]"); } catch (S3ServiceException e) { log.error("Failed to get or object listing for bucket[" + bucketName + "] due to exception:", e); } for (org.jets3t.service.model.S3Object s3Object : objects) { if (s3Object.getKey().contains("$") == false) { keys.add(s3Object.getKey()); } } return keys; }

    过滤密钥后,您可以下载密钥列表的特定部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-13
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多