Хобрук: Ваш путь к мастерству в программировании

Android aws SDK показывает ход загрузки, не возвращая переданные байты

Я загружаю изображение на сервер Amazon с помощью AWS SDK. Здесь я хочу, чтобы ход загрузки обновлял мой индикатор выполнения. Но я не получаю количество переданных байтов.

Вот мой код:

final File image = new File(imagePath);

                s3Client.createBucket(Constants.getPictureBucket());
                // Content type is determined by file extension.
                PutObjectRequest por = new PutObjectRequest(Constants.getPictureBucket(),
                        obj.stackItem.ItemId + ".jpg", image);

                s3Client.putObject(por);

                Log.d("UploadTaskScheduler", "Photo Name: " + obj.stackItem.ItemName);

                por.setProgressListener(new ProgressListener() {
                    int total = 0;

                    @Override
                    public void progressChanged(ProgressEvent pv) {
                        total += (int) pv.getBytesTransfered();
                        Log.d("UploadTaskScheduler", "BytesTransfered: " + total);
                    }

                });

Он печатает первый журнал, который является именем файла. Но второй лог даже не печатается.


  • Я помогаю поддерживать AWS SDK для Android. Не могли бы вы сообщить нам, какую версию SDK вы используете и какой уровень API вы создаете? 28.02.2013
  • Что такое obj здесь. Я сталкиваюсь с аналогичной проблемой при загрузке изображения с Android на aws с путем к изображению вместо средства выбора изображения из галереи. 11.03.2014
  • Привет! То же самое, что и я, чтобы загрузить изображение на сервер Amazon, используя AWS SDK версии aws-android-sdk-2.1.4. Файл aws-android-sdk-2.1.4-s3.debug.jar добавлен только в мою папку libs. И я получаю сообщение об ошибке для BasicAWSCredentials, которое не может быть преобразовано в тип. Мне не удалось импортировать BasicAWSCredentials. Помогите мне, пожалуйста?. Заранее спасибо. 06.11.2014

Ответы:


1

Изучив ваш код, я заметил, что вы настраиваете прослушиватель прогресса после начала загрузки.

Вам нужно переместить por.setProgressListener(...); перед s3Client.putObject(por);, после чего вы увидите ход загрузки.

28.02.2013
  • Потрясающие!! спасибо за помощь.. Но последний вопрос, Как получить больше логов, в смысле сейчас мои файлы довольно маленькие 100кб, поэтому лог печатает 0, 80, 100. Для некоторых файлов 0, 100 напрямую.. 01.03.2013
  • @sukarno К сожалению, в настоящее время нет контроля над интервалом получения прогресса. 01.03.2013

  • 2

    Вы можете использовать вот так.

            @Override
            public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
    
                long _bytesCurrent = bytesCurrent;
                long _bytesTotal = bytesTotal;
    
    
                float percentage =  ((float)_bytesCurrent /(float)_bytesTotal * 100);
                Log.d("percentage","" +percentage);
    
                progressbar.setProgress(percentage);
            }
    
    18.10.2016
    Новые материалы

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

    Ториго  — революция в игре Го
    Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

    Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
    Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

    Математика и интуиция - Часть 1
    У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..