Javascript 在dropbox中上载多个图像错误(写入操作太多)
嗨,我正试图上传一个图像到我的dropbox,它的工作正常,但当我选择一个多图像并上传到dropbox时,一些图像没有上传,错误显示Javascript 在dropbox中上载多个图像错误(写入操作太多),javascript,angularjs,ionic-framework,dropbox,Javascript,Angularjs,Ionic Framework,Dropbox,嗨,我正试图上传一个图像到我的dropbox,它的工作正常,但当我选择一个多图像并上传到dropbox时,一些图像没有上传,错误显示 "{"error_summary": "too_many_write_operations/..", "error": {"reason": {".tag": "too_many_write_operations"}}}" 这是我使用cordovafiletransfer的代码 $cordovaImagePicker.getPictures(optionsS
"{"error_summary": "too_many_write_operations/..", "error": {"reason": {".tag": "too_many_write_operations"}}}"
这是我使用cordovafiletransfer的代码
$cordovaImagePicker.getPictures(optionsSelectImage)
.then(function(results) {
console.log(results)
for (var i = 0; i < results.length; i++) {
// console.log('Image URI: ' + results[i]);
var image = results[i];
var counter = 0;
// var filename = JSON.stringify(results[i].substr(results[i].lastIndexOf('/') + 1));
// console.log(filename)
var options = {
headers: {
'Content-Type': 'application/octet-stream',
'Authorization': 'Bearer ACCESS TOKEN',
"Dropbox-API-Arg": '{"path": "/photo.jpg", "mode": "add","autorename": true,"mute": false}'
}
}
$cordovaFileTransfer.upload('https://content.dropboxapi.com/2/files/upload', image, options)
.then(function(result) {
// Success!
counter++;
if (counter != results.length) {
$ionicLoading.show({
//Loading Content
template: '<ion-spinner icon="android"></ion-spinner><br><center>Uploading ' + counter + ' /' + results.length + ' to Dropbox</center>'
});
}
// if number of files uploaded in the dropbox == total number of queued files for uploading
else if (counter === results.length) {
$ionicLoading.hide();
}
console.log(result)
}, function(err) {
// Error
console.log(err)
}, function(progress) {
});
$cordovaImagePicker.getPictures(选项SelectImage)
.然后(函数(结果){
console.log(结果)
对于(var i=0;i正在将'+计数器+'/'+结果.length+'上载到Dropbox'
});
}
//如果dropbox中上载的文件数==排队等待上载的文件总数
else if(计数器===results.length){
$ionicLoading.hide();
}
console.log(结果)
},函数(err){
//错误
console.log(错误)
},职能(进度){
});
我认为for循环对于这个过程来说太快了,这就是为什么dropbox api无法处理它的原因?我如何才能减慢速度或延迟上传呢?可能您正在同时上传所有图像,更好的解决方案可能是成对或逐个上传图像,链接如下承诺:
var promiseChain = Q.fcall(function() {});
results.forEach(function(filename) {
var promiseLink = function() {
var def = Q.defer();
$cordovaFileTransfer.upload('...', filename).then(function(result) {
// do stuff
setTimeout(function(){
def.resolve();
}, delay)
});
return def.promise;
};
promiseChain = promiseChain.then(promiseLink);
});
promiseChain();
速率限制API限制您的应用程序可以对每个用户进行的调用量。该限制足够高,任何合理使用API的行为都不应接近于达到该限制。达到速率限制的应用程序将收到503错误,该错误使用Retry After标头准确指示何时可以再次开始发出请求。如果您的应用程序允许es OAuth 2.0,错误将是429。如果您继续达到这些限制,请联系我们的开发人员支持团队,我们将与您合作。请注意,
过多的写操作
尤其不是明确的速率限制。从:>过多的写操作无效,用户的Dropbox中会发生过多的写操作。This也称为“锁争用”。您可以在中找到更多信息。