Как загрузить файл в OneDrive с помощью OneDrive REST API?

Пожалуйста, позвольте мне объяснить что Я делаю и Как Я делаю.

что я делаю?

Я пытаюсь загрузить файл в Onedrive, используя его REST API Источник:один диск API документация

Я использую фрагменты OneDrive approch, чтобы сделать так, как файл может быть огромным как 5gb или как 1Kb (зависит от пользователя)

В настоящее время я делаю это с помощью ПОСТ-ЧЕЛОВЕК расширение Chrome для вызова APIes

как у меня дела?

  1. создается маркер доступа
  2. создан сеанс и получен url загрузки
  3. загрузка файла с помощью запроса PUT, как указано ниже

выбранный файл, который я хочу загрузить (размер файла: 729676295 байт) enter image description here

добавлены заголовки и отправлен запрос и отправлен запрос enter image description here вот и результат enter image description here

Он говорит, что максимальный размер фрагмента составляет 67108864 байта, поэтому я изменил значение

контент-длина : 67108864 и content-range: байты 0-67108863 / 729676295

но затем я получаю это сообщение об ошибке: объявленная длина фрагмента не соответствует указанному числу байты enter image description here

пожалуйста, помогите мне выяснить, что я должен передать в content-length и content-range.

большое спасибо за внимание.

2 ответов


наконец-то, слава богу после 2 дней борьбы я нашел в чем была проблема.

есть некоторые моменты, которые нужно иметь в виду

  1. вы должны разделить файл на равные части и сохранить его где-нибудь и загрузить каждый из них отдельно по тому же URL, который вы получаете после создания сеанса.
  2. Контент-Длина должно быть общее количество байтов файла, который вы загружаете во всех запросах на загрузку фрагментарный.
  3. Content-Range будет так: 0 - {fragmentLength-1} / {totalNumberOfBytesOfFile}(как и контент-длина) и из следующего фрагмента Content-Range будет {uploadedBytes} - {uploadedBytes+nextSetOfBytes-1} / {totalNumberOfBytesOfFile}

Примечание: следующий набор байтов должен быть таким же длинным, как предыдущий. Не волнуйтесь, потому что последний фрагмент может быть отличающийся.

P. S: Не используйте диапазон содержимого, который вы получите после успешной загрузки фрагмента.


enter image description here

{totalNumberOfBytesOfFile} нет же content-length;

Content-Length - байты текущего фрагмента.

изображение является примером для загрузки файла 4917 байт.