java - 减少 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);
解决方案
所以我能够得到一个解决方案。这是我所做的:
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);
推荐阅读
- c# - 如何从外部结构的对象访问嵌套结构的属性
- amazon-web-services - AWS HTTP Gateway:相同路由的多种方法,不包括使用无服务器框架的选项
- laravel - Laravel 自定义邮箱验证
- r - R计算日期差异时的函数错误
- c++ - Boost Python - 对`_Py_NoneStruct'的未定义引用
- python - txt 中的数据格式。文件
- javascript - Javascript:什么是 Http 服务中的 reportProgress?
- testng - TestNG-每次运行后都会覆盖结果
- javascript - WebAudio 音频上下文内存泄漏
- node.js - 使用nodejs进行http post请求时出错