【发布时间】:2017-07-06 07:41:44
【问题描述】:
有没有人能够在 Cordova 应用程序中使用 Dropbox (Link to Dropbox javascript SDK) API V2 的 Javascript SDK 将文件上传到 Dropbox?我查看了 Dropbox-sdk.js 文件以了解上传文件的方法,但所有方法都需要我们要上传到保管箱 More about Upload methods here 的文件的内容。我们如何提供文件的内容? examples from the Javascript Sdk 使用输入类型文件元素来获取要上传到 Dropbox 的文件。但万一科尔多瓦怎么办呢?我们如何传递文件的内容?
下面是我将文件上传到 Dropbox 的代码,但是当我尝试打开上传的文件时,它显示没有内容的 pdf 文件。
function uploadFile(tmpStrListStr)
{
var tmpStrList = "";
var uploadSuccess = false;
tmpStrList = tmpStrListStr.substring(0, tmpStrListStr.length-1).split(",");
istrue = true;
for(var i = 0 ; i < tmpStrList.length; i++)
{
var path = cordova.file.externalRootDirectory+'/Test/Logs/'+tmpStrList[i] + '.pdf';
window.resolveLocalFileSystemURL(path, function (fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
var ACCESS_TOKEN = localStorage.accessToken;
var dbx = new Dropbox({ accessToken: ACCESS_TOKEN });
var fileCommitInfo = {};
fileCommitInfo.contents = reader.result;
fileCommitInfo.path = '/' + fileEntry.name;
fileCommitInfo.mode = { '.tag': 'overwrite' };
fileCommitInfo.autorename = true;
fileCommitInfo.mute = true;
dbx.filesUpload(fileCommitInfo)
.then(function(response) {
alert(response);
})
.catch(function(errr) {
console.log(errr);
});
}
reader.readAsDataURL(file);
});
}, function (e) {
console.log("FileSystem Error");
console.dir(e);
});
}
}
有没有其他方法可以在不使用 Javascript SDK 的情况下为 Cordova 应用程序实现 Dropbox 功能(API V2)?
全世界有没有人可以告诉我如何使用 Javascript SDK V2 将文件上传到 Dropbox?
【问题讨论】:
-
看起来您在
FilesCommitInfo中填写了正确的参数。请问reader.result的值是多少? -
Reader.result 包含文件数据作为 base64 编码字符串。
-
它不应该是 base64 编码的,但是提供一个字符串一般来说应该没问题,所以不会得到一个空文件。您收到的是
response还是errr?请分享你得到的任何输出。 -
@Nikhil 如果您找到了解决方案,请在此处发布。 TIA!
-
@Devashish 抱歉延迟回复......!我在下面添加了答案。看看..
标签: javascript cordova dropbox-api