我有这个上传图片的功能。
MyImages.instance.on('sending', function(file, xhr, formData) {
// support
if ($.inArray(file.type, ['image/png','image/jpg','image/jpeg','image/gif']) != -1) {
var storage = firebase.storage();
var storageRef = storage.ref('' + file.name);
var uploadTask = storageRef.put(file);
uploadTask.on('state_changed', function(snapshot) {
}, function(error) {
console.log('Error Uploaded');
}, function() {
var downloadURL = uploadTask.snapshot.downloadURL;
console.log('Uploaded a blob or file! ' + downloadURL);
});
var getImageUrl = function(file){
var returnVal;
storageRef.getDownloadURL().then(function(url){
returnVal = url;
});
return returnVal;
};
console.log('return value ' + getImageUrl);
formData.append('image', file);
}
});
然后我创建了这个函数来知道图像是否上传成功
MyImages.instance.on('success', function(file, response) {
//support
if (response.data && response.data.link) {
if (response.status != 200 && response.data.error) {
MyImages.notification(response.data.error);
}
file.external_link = response.data.link;
// Add the message to the textarea
MyImages.text.add('[img]' + file.external_link + '[/img]');
console.log(file.external_link);
if (response.data.deletehash) {
file.deletehash = response.data.deletehash;
}
MyImages.notification(MyImages.lang.uploaded_to_firebase);
return;
}
});
我正在使用dropzone.js,我想问的是如何获取此代码
file.external_link
与
相同returnVal
或如何在其他功能中使用 returnVal ,这样就能一次又一次地使用
答案 0 :(得分:0)
要使用“file.external_link”,最好在函数内部使用回调来“成功”。
e.g。
MyImages.instance.on('success', function(file, response) {
//...
// when your function is in this context
this.handeFilePath(file.external_link);
return;
}.bind(this)); // add this context to function scope to call handeFilePath()
甚至可以更好地处理自定义回调中的所有成功处理。 例如
MyImages.instance.on('success', handeFilePathOrSomethingOther);
var handeFilePathOrSomethingOther = function(file, response) {
// your stuff
};