我有
我有一个网站试图向客户提供服务,以便从DropBox下载文件.为了简化开发,我使用Dropbox chooser.
为此,我启用了我希望下载的域名并包含< script> DropBox本身(带有相应的data-app-key)建议的标签进入我的HTML页面.
一切都很美好.
问题
现在我需要下载用户选择的文件. Dropbox chooser似乎没有为此提供任何功能,它只是检索有关文件的信息.在我的情况下,这是一个直接链接,下载文件.
要下载该文件,在我看来,我需要使用DropBox.Client,它是在//cdnjs.cloudflare.com/ajax/libs/dropbox.js/0.9.1/dropbox.min.js在另一个DropBox javascript库中定义的
所以使用该libarry我运行这样的代码:
//OPTIONS FOR DROPBox CHOOSER var options = { linkType: "direct",// THIS FUNCITON RUNS WHEN USER SELECTS SOMETHING // FROM DOPBox_CHOOSER success: function (files) { // DEFINE APP KET FOR DROPBox_CLIENT (KEY,SECRET...),WHICH I GET // BY CREATING NEW "CORE API" TYPE:Full DropBox APPLICATION ON // DROPBox APP CONSOLE var appKey = { key: 'APP KEY',secret: 'CLIENT SECRET',sandBox: true }; //INIT CLIENT var client = new DropBox.Client(appKey); //TRY TO AUTHENTICATE IT client.authenticate(function (error,client) { if (error) { console.log(error); } if (client.isAuthenticated()) { //READ FILES for (var i = 0; i < files.length; i++) { var file = files[i]; client.readFile(file.link,function (error,data) { if (error) { return console.log(error); // Something went wrong. } alert(data); // data has the file's contents }); } } else { console.log("Error on authentication"); } }); },cancel: function () { } }; //OPEN DROPBox_CHOOSER DropBox.choose(options);
但所有这些都没有报告我:
如果我不调用client.authenticate我无法下载文件获取“未授权错误”通知.
题
我该如何解决这个问题. ?
解决方法
一个简单直接的解决方案是使用XMLHTTP,如下所示
function readDropBox(sURL) { var oRequest = new XMLHttpRequest(); oRequest.open("GET",sURL,false); oRequest.onreadystatechange = function(oEvent) { if (oRequest.readyState === 4) { if (oRequest.status === 200) { console.log(oRequest.responseText) } else { console.log("Error",oRequest.statusText); } } } oRequest.setRequestHeader("User-Agent",navigator.userAgent); try { oRequest.send(null) } catch (err) { alert(err); } if (oRequest.status == 200) { return oRequest.responseText; } else { alert("Error - File not found in DropBox public folder"); return null; } }