Как загрузить большой файл размером более 100 МБ через API управления данными в Autodesk Forge? - PullRequest
0 голосов
/ 08 апреля 2020

Окончательный результат:

Мои извинения за ошибку.
Я установил неправильное значение Content-Range в моих запросах http.

Пример приведен здесь:

  1. Исходный размер файла: 5242880
  2. Размер куска: 2097152
  3. Требуется количество HTTP-запросов: 3

Таким образом, правильный Content-Range следующий:

  1. байтов 0-2097151 / 5242880
  2. байтов 2097152-4194303 / 5242880
  3. байтов 4194304-5242879 / 5242880

Благодаря Ваш совет, я должен проверить с:

  • cURL
  • Почтальон
  • Чарльз
  • Node.js
  • C#
  • Swift

Вторая попытка с почтальоном:

Я снова попробовал следующий API с Почтальон .

Я использую rst_basic_sample_project.rvt , предоставляемые Autdesk.
Файл имеет размер 5693440 байт.

$ du -b rst_basic_sample_project.rvt
5693440 rst_basic_sample_project.rvt

Я разделил ш с помощью следующей команды.

# Chunk size is 5 MB.
split -b 5242880 rst_basic_sample_project.rvt "temp/data-"

Итак, я получил data-aa и data-ab.
Далее попробуйте использовать PUT buckets /: bucketKey / objects /: objectName / resumable .

Отправка data-aa в API. HTTP-запрос здесь:

PUT /oss/v2/buckets/${MY-BUCKET-KEY}/objects/${MY-OBJECT-NAME}/resumable HTTP/1.1
Host: developer.api.autodesk.com
Authorization: Bearer ${MY-TOKEN}
Content-Range: bytes 1-5242880/5693440
session-id: j45e05
Content-Type: application/octet-stream

"<data-aa binary>"

Я получил HTTP 202. Ожидаемый результат.
И отправьте data-ab в API. HTTP-запрос здесь:

PUT /oss/v2/buckets/${MY-BUCKET-KEY}/objects/${MY-OBJECT-NAME}/resumable HTTP/1.1
Host: developer.api.autodesk.com
Authorization: Bearer ${MY-TOKEN}
Content-Range: bytes 5242880-5693440/5693440
Content-Type: application/stream
session-id: j45e05
Content-Type: application/octet-stream

"<data-ab binary>"

Я получил HTTP 416 Requested Range Not Satisfiable.
Это неожиданный результат.


Первая попытка cURL:

Пожалуйста, покажите мне Как загрузить большой файл.
Я пытаюсь загрузить файл размером более 100 МБ с помощью API ниже.

Прежде всего, я просто хочу узнать ответ API и проверить. Поэтому я отправил HTTP-запрос PUT с помощью cURL.

  • Большой файл составляет 157286400 байт (с помощью команды dd if=/dev/random of=bigfile bs=1M count=150)
  • Размер фрагмента данных составляет 5242880 байт (с помощью команды split -b 5242880 bigfile "temp/data-" )

команда cURL находится здесь:

curl \
    -v \
    -X PUT "https://developer.api.autodesk.com/oss/v2/buckets/${MY-BUCKET-KEY}/objects/${MY-OBJECT-NAME}/resumable" \
    -H "Authorization:Bearer ${MY-TOKEN}" \
    -H "Content-Length: 5242880" \
    -H "Content-Type:text/plain; charset=UTF-8" \
    -H "Content-Range:bytes 1-5242880‬/157286400 " \
    -H "Session-Id:111111111" \
    --data @temp/data-aa # One of the files created by splitting a large file with the split command.

# PUT /oss/v2/buckets/${MY-BUCKET-KEY}/objects/${MY-OBJECT-NAME}/resumable HTTP/1.1
# Host: developer.api.autodesk.com
# User-Agent: curl/7.69.0
# Accept: */*
# Authorization:Bearer ${MY-TOKEN}
# Content-Length: 5242880
# Content-Type:text/plain; charset=UTF-8
# Content-Range:bytes 1-5242880‬/157286400 
# Session-Id:111111111

возврат ответа API HTTP/1.1 504 GATEWAY_TIMEOUT.
Как загрузить большой файл размером более 100 МБ через API управления данными в Autodesk Forge

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Если вы можете использовать инструмент, и вам не нужно реализовывать возобновляемую загрузку самостоятельно (и вы можете использовать VSCode), вы должны проверить VS-Code Forge Tools.

https://github.com/petrbroz/vscode-forge-tools

https://forge.autodesk.com/blog/forge-visual-studio-code

Наша команда использовала его для загрузки моделей размера GB во время тестирования.

0 голосов
/ 09 апреля 2020

Попробуйте buckets /: bucketKey / objects /: objectName / resumable

Затем можно разбить большие файлы на куски и указать диапазон в заголовке для каждого запроса на загрузку кусков в избегайте тайм-аутов и других проблем с сетью, например:

curl -v "https://developer.api.autodesk.com/oss/v2/buckets/bucketexamplekey/objects/objectKeyFoo/resumable"
  -X PUT
  -H "Authorization:Bearer p0vNqwggSc4EOJdhR4KkTVyJFIzQ"
  -H "Content-Type:text/plain; charset=UTF-8"
  -H "Content-Range:bytes 1-15/100"
  -H "Session-Id:-811577637"
  --data ...

Вы также можете использовать этот инструмент здесь (руководство здесь ) для этой цели.

...