首页 > 解决方案 > Amazon S3 AWS 上传进度监听器

问题描述

有谁知道如何在 Amazon S3 的分段上传中查看上传进度(百分比)?

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

解决方案


我会这样做:

MultipleFileUpload transfer = transferManager.uploadDirectory(mybucket, null, new File(localSourceDataFilesPath), false);

// blocks the thread until the upload is completed
showTransferProgress(transfer);

然后在showTransferProgress中,我将使用睡眠创建一个上传块,并每隔 X 秒进行一次数学运算:

private void showTransferProgress(MultipleFileUpload xfer) {
        while (!xfer.isDone()) {
            // some logic to wait so you don't do the math every second like a Thread.sleep

            TransferProgress progress = xfer.getProgress();
            long bytesTransferred = progress.getBytesTransferred();
            long total = progress.getTotalBytesToTransfer();
            Double percentDone = progress.getPercentTransferred();
            LOG.debug("S3 xml upload progress...{}%", percentDone.intValue());
            LOG.debug("{} bytes transferred to S3 out of {}", bytesTransferred, total);
        }

        // print the final state of the transfer.
        TransferState xferState = xfer.getState();
        LOG.debug("Final transfer state: " + xferState);
    }

这条线就是你要找的:

Double percentDone = progress.getPercentTransferred();

推荐阅读