我想知道是否可以直接上传文件以与 Box View API 一起使用,而无需将其保存在我的本地服务器上。这个想法是用户将能够上传文件(pdf、ppt 等),它只能与 Box Viewer 一起使用,而不是保存在我的服务器中。用户将上传许多大文件,我希望避免存储它们。
我知道 Box 需要文件位置的 URL 才能生成内容,但是有没有办法通过 View API 上传和处理文件?
如果有人知道解决方案,将不胜感激!谢谢。
我想知道是否可以直接上传文件以与 Box View API 一起使用,而无需将其保存在我的本地服务器上。这个想法是用户将能够上传文件(pdf、ppt 等),它只能与 Box Viewer 一起使用,而不是保存在我的服务器中。用户将上传许多大文件,我希望避免存储它们。
我知道 Box 需要文件位置的 URL 才能生成内容,但是有没有办法通过 View API 上传和处理文件?
如果有人知道解决方案,将不胜感激!谢谢。
无法直接从用户的浏览器上传,因为 API 不提供 CORS 标头。这是出于安全原因,因为为了直接从客户端上传,您必须公开您的 API 令牌(您绝对不想这样做)。
不将文件存储在服务器上的一种方法是实质上将多部分上传请求代理到 View API(有关如何使用 node.js 执行此操作的示例,请参阅此要点)。另一种选择是使用FilePicker 之类的服务,它允许用户从自己的计算机或任意数量的其他服务中选择文件,它只返回一个 URL,您可以使用 URL 上传简单地将其传递给 View API。
仅当您发送大文件时,多部分 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"}