Не удается открыть JPG - Ошибка при интерпретации файла изображения JPEG

Я сделал несколько примеров загрузок в OneDrive с использованием Graph API. Я могу успешно загружать файлы (текстовые файлы) через OkHttp. Но когда дело доходит до изображений, я получаю это сообщение после открытия изображения

Error interpreting JPEG image file (Not a JPEG file: starts with 0xef 0xbf)

После загрузки изображений на onedrive. .svg формат изображения загружаются успешно, но .jpg, .png Изображения формата портятся при загрузке на один диск.

Ниже мой подход.

Преобразование изображения в байтовый массив, а затем преобразование (запись) этого байтового массива в загружаемый файл.

   String url = "https://graph.microsoft.com/v1.0/drive/root:/" + step.file_name + ":/content";

                    Request request = new Request.Builder().url(url)
                            .put(RequestBody.create(MediaType.parse("image/*"), step.file_data))
    //step.file_data contains the byte array.
                            .addHeader("Authorization", String.format("Bearer %s", step.getAccess_token()))
                            .build();
Response response = okHttpClient.newCall(request).execute();

Этот подход работает для текстовых файлов и изображений в формате.svg, но не для изображений в другом формате. Я просмотрел много ссылок / сайтов, но не смог найти способ. Что может быть причиной?! Заранее спасибо

1 ответ

Решение

Поскольку файлы SVG в основном представляют собой файлы XML (т.е. текстовые файлы), я подозреваю, что ваша проблема на самом деле связана с двоичными файлами, скорее всего, с проблемой порядка байтов.

Когда байтовый массив собирается и передается по сети, он не записывается побайтово, а объединяется в большие куски (вероятно, по соображениям скорости).
Например, вы хотите отправить 4 байта (ABCD) с вашей машины, но они пишутся как BADC на удаленном сервере.

Почему с текстовыми файлами этого не происходит... обычно текстовые файлы состоят из простых символов ASCII (если они не закодированы в UTF-8 или что-то подобное...), поэтому они обрабатываются побайтово.

Другие вопросы по тегам