Тип MIME переключен с image/jpeg на image/png

Следующие 2 фрагмента кода демонстрируют проблему, с которой я столкнулся при использовании НОВОГО Google Диска Android API/Google Play Services 4.2 (libver 15). Или это особенность, о которой я не знаю? Вся проверка ошибок и инициализация удалены, чтобы сделать код простым.

1/ Я создаю картинку MIME-типа "image/jpeg";

GoogleApiClient mGAC;
byte[] jpgBuffer;
DriveFolder fldr;

ContentsResult rslt = Drive.DriveApi.newContents(mGAC).await();
Contents cont = rslt.getContents();
cont.getOutputStream().write(jpgBuffer);
MetadataChangeSet meta = new MetadataChangeSet.Builder()
  .setTitle("foo.jpg").setMimeType("image/jpeg")
  .build();
fldr.createFile(mGAC, meta, cont);

На Драйве все красиво и модно. Изображение есть, выглядит отлично, могу даже маме отправить. Но это не то, что мне нужно. Я хотел бы получить его в другой части моего приложения для Android.

2/ Итак, я пробую это:

Query query = new Query.Builder().addFilter(
  Filters.eq(SearchableField.MIME_TYPE, "image/jpeg")
).build();
MetadataBufferResult rslt = Drive.DriveApi.query(mGAC, query).await();
for (Metadata md : rslt.getMetadataBuffer()) {
  Log.d("TAG", md.getTitle() + " " + md.getMimeType());
}

Результат: большое, жирное НИЧТО.

Я не сдаюсь, поэтому следующим логическим шагом будет поиск ЛЮБОГО файла. И файл «foo.jpg», который я сохранил на шаге 1/, отображается как MIME-тип «image/png».


person seanpj    schedule 19.02.2014    source источник
comment
вы пробовали использовать mimetype как image/*. Таким образом, он позаботится о любом формате изображения.   -  person Sushil    schedule 19.02.2014
comment
Вопрос очень специфичен для Android API Google Диска, и AFAIK не поддерживает подстановочные знаки.   -  person seanpj    schedule 19.02.2014
comment
Мы посмотрим на это, но есть ли шанс, что бинарные данные, которые вы загружаете, на самом деле имеют формат png?   -  person Cheryl Simon    schedule 19.02.2014
comment
Ты опередил меня на 7 минут. Таким образом, в конце концов, это может быть спор о праве собственности на поле метаданных MIME.   -  person seanpj    schedule 20.02.2014


Ответы (1)


Тайна раскрыта. ЭТО ФУНКЦИЯ! "jpgBuffer" в

cont.getOutputStream().write(jpgBuffer);

фактически содержит двоичные данные PNG. Таким образом, даже если мое приложение указало тип MIME «image/jpeg», Google после просмотра моих (моих пользовательских) данных решил исправить тип MIME на «image/png». Также следует отметить, что это происходит с некоторой задержкой, что делает процесс отладки еще более загадочным.

person seanpj    schedule 19.02.2014