我想知道,是否可以直接上传一个文件,不需要保存在我的本地服务器上,就可以使用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"}