Не может Открыть JPG - Ошибка, интерпретирующая файл изображения JPEG

Я сделал некоторые демонстрационные загрузки на OneDrive с помощью 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 изображения формата, но не на другие изображения формата. Я прошел много ссылок/веб-сайтов, но не могущий найти путь. Какова могла быть причина?! Спасибо :) заранее

0
задан 17 January 2019 в 10:41

1 ответ

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

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

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

2
ответ дан 26 October 2019 в 12:52

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

Похожие вопросы: