Перезаписать файл, только если он имеет больший размер - PullRequest
0 голосов
/ 17 октября 2018

У меня есть небольшой код для отправки файлов в корзину S3:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    if (intent != null && intent.getStringExtra(INTENT_KEY_NAME) != null) {
        final String key = intent.getStringExtra(INTENT_KEY_NAME);
        final File file = (File) intent.getSerializableExtra(INTENT_FILE);
        final String transferOperation = intent.getStringExtra(INTENT_TRANSFER_OPERATION);
        TransferObserver transferObserver;

        switch (transferOperation) {
            case TRANSFER_OPERATION_DOWNLOAD:
                Log.d(TAG, "Downloading " + key);
                transferObserver = transferUtility.download("aws-mybucket", key, file);
                transferObserver.setTransferListener(new DownloadListener());
                break;
            case TRANSFER_OPERATION_UPLOAD:
                Log.d(TAG, "Uploading " + key);
                transferObserver = transferUtility.upload("aws-mybucket", key, file);
                transferObserver.setTransferListener(new UploadListener());
                break;
        }
        return START_STICKY;
    } else {
        return START_NOT_STICKY;
    }
}

И это моя настоящая политика в отношении корзины:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "AllowPublicRead",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::aws-mybucket/*"
    }
]
}

Когда файл отправляется, они простоперезаписать реальный.Мой вопрос: есть ли какая-либо политика сегмента или конфигурация блока, которая позволит перезаписи происходить, только если отправленный файл больше, чем фактический?Спасибо.

1 Ответ

0 голосов
/ 17 октября 2018

Несколько способов сделать это из клиентской логики.

1) Вы можете использовать функцию контроля версий, предоставляемую Amazon S3.Вы можете включить управление версиями в корзине.Вы можете отправить версию вместе с метаданными во время каждой загрузки.Недостатком является то, что вам нужно платить за поддержку нескольких версий.

2) Перед загрузкой файла вы можете получить метаданные объекта, идентифицируемого по имени ключа.Метаданные (если присутствует объект, идентифицируемый ключом) содержат lastModifiedTime и size.В вашем сценарии использования вы можете проверить lastModifiedTime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...