首页 > 解决方案 > 减少 Amazon S3 AWS 上传 ProgressListener 的详细程度/频率?

问题描述

我正在将多部分文件上传到 S3。我添加了一个 ProgressListener 来打印进度,效果很好。太棒了。我上传的文件有几 GB 大,我记录的消息太细了。我得到了几千个:

2021-11-04 06:56:07 INFO  GenericSftpLoader:190 - transfered bytes: 8192

有什么办法可以减少每 8192 字节打印一次,而是像 1048576 字节这样更合理的东西?

我的实际代码在 Scala 中,但我从 AWS 开发工具包文档中密切关注这个示例:

TransferManager tm = new TransferManager(new ProfileCredentialsProvider());        

    PutObjectRequest request = new PutObjectRequest(
            existingBucketName, keyName, new File(filePath));
    
    request.setGeneralProgressListener(new ProgressListener() {
        @Override
        public void progressChanged(ProgressEvent progressEvent) {
            System.out.println("Transferred bytes: " + 
                    progressEvent.getBytesTransferred());
        }
    });       

    Upload upload = tm.upload(request);

标签: javaamazon-web-servicesamazon-s3aws-sdk

解决方案


所以我能够得到一个解决方案。这是我所做的:

TransferManager tm = new TransferManager(new ProfileCredentialsProvider());

PutObjectRequest request = new PutObjectRequest(
        existingBucketName, keyName, new File(filePath));

request.setGeneralProgressListener(new ProgressListener() {
    private Long myBytes = 0
    @Override
    public void progressChanged(ProgressEvent progressEvent) {
        myBytes += progressEvent.getBytesTransferred();
        if (bytesTransferred > 1048576) {
            System.out.println("Transferred bytes: " + 
                    myBytes);
            myBytes = 0;
        }
    }
});       

Upload upload = tm.upload(request);

推荐阅读