我使用uploadFileList()将列表中的文件上传到S3中,因此此接口以列表(记录)作为参数,如下所示
MultipleFileUpload xfer = tm.uploadFileList(bucketName, "TEST",new File(fileLocation), records);这样的列表中的记录
21564_114762642_ANA_9ECB7C98-C2D7-428A-B6AD-7A6C62E1A7BE_App.xml.gz
21224_114762642_ANA_9ECB7C98-C2D7-428A-B6AD-7A6C62E1A7BE_App.xml.gz
20780_114762642_ANA_9ECB7C98-C2D7-428A-B6AD-7A6C62E1A7BE_App.xml.gz
20407_114762642_ANA_9ECB7C98-C2D7-428A-B6AD-7A6C62E1A7BE_App.xml.gz到目前为止,它工作得很好。现在我需要在API中添加前缀,因为文件名的前四个数字,如21564,将是第一个文件的前缀,因此为了做到这一点,我必须迭代列表并逐个文件添加,但这将减慢上传到S3的速度,与上传列表相比。
有没有办法添加前缀,同时上传列表到S3中的文件是随机的,但模式是固定的?
发布于 2018-11-28 13:57:36
请参阅有关object keys的S3文档。因为S3存储桶是平面的(不是文件系统层次结构),所以您可以告诉亚马逊用于您上传的文件的关键前缀,从而将它们都分组到同一个前缀下。例如,我可以提供"MovieReviews/“作为文件列表的前缀,S3中得到的对象键将以此开头。一些工具可以识别斜杠,并允许您将S3存储桶作为目录层次结构进行浏览。
在您的例子中,如果文件应该使用前N个字符作为分组关键字,那么您可以通过首先根据该子字符串进行分组来批量上传它们,例如fileList.stream().collect(Collectors.groupingBy(s -> s.substring(0, N)))
https://stackoverflow.com/questions/53512421
复制相似问题