Box View API: можно ли загрузить файл напрямую?
Мне было интересно, можно ли загрузить файл напрямую для использования с API Box View, не сохраняя его на моем локальном сервере. Идея заключается в том, что пользователи смогут загружать файл (pdf, ppt и т. Д.), И он будет использоваться только с Box Viewer и не будет сохранен на моем сервере. Пользователи будут загружать много больших файлов, и я стараюсь не хранить их.
Я знаю, для Box требуется URL-адрес местоположения файла, чтобы он мог генерировать контент, но есть ли способ для загрузки файла и обработки с помощью API представления?
Если кто-нибудь знает о решении, оно будет высоко оценено! Благодарю.
1 ответ
Невозможно загрузить напрямую из браузера пользователя, потому что API не предоставляет заголовки CORS. Это из соображений безопасности, потому что для загрузки непосредственно с клиента вам необходимо предоставить свой токен API (что вы определенно не хотите делать).
Один из способов не хранить файлы на вашем сервере - это, по сути, прокси-запрос на загрузку нескольких частей в API представления (см. Этот список для примера того, как это сделать с помощью node.js). Другим вариантом может быть использование службы, такой как FilePicker, которая позволяет пользователям выбирать файлы со своего компьютера или из любого количества других служб, и она просто возвращает URL-адрес, который можно просто передать в API представления с помощью загрузки URL-адреса.
Многокомпонентный API - это вариант, только если вы отправляете большие файлы. Вот ответ на попытку отправить небольшой файл:
{"data":
{"code":"file_size_too_small",
"message":"File size 23 less than minimum allowed for this API: 20000000",
"request_id":"aab58e965e91c8aa7283b2faddec5ab3"},
"status":400,"config":{"method":"POST",
"transformRequest":[null],
"transformResponse":[null],
"jsonpCallbackParam":"callback",
"url":"https://upload.box.com/api/2.0/files/upload_sessions",
"headers":{"Authorization":"Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type":"multipart/form-data",
"Accept":"application/json, text/plain, */*"},
"data":{"folder_id":"111111111111",
"file_size":23,
"file_name":"TestUploadFile.txt"}},
"statusText":"Bad Request",
"xhrStatus":"complete"}