我正在尝试通过读取zip文件中的清单文件的内容来验证文件上载。我正在使用JSZip来读取文件,并希望在某些条件下停止上传文件的过程。使用if / else强制解决/拒绝的正确方法是什么?
function validateUpload(file, errFiles) {
var validateFile = JSZip.loadAsync(file)
.then(function(zip) {
var manifest = zip.files['manifest.json'];
return manifest.async("text") // added return here
.then(function(contents) {
var manifestObj = angular.fromJson(contents);
if((manifestObj.module === 'analytics') && ($state.current.name.indexOf('packages') !== -1)) {
return $q.reject('Invalid software upload');
}
if(!manifestObj.module && ($state.current.name.indexOf('analytics') !== -1)) {
return $q.reject('Invalid analytics upload');
}
return $q.resolve(file);
});
});
validateFile.then(function(data) {
console.log('success: ' + data);
uploadFile(file);
}, function(error) {
console.log('error: '+ error);
});
修改
我在调用manifest.async之前错过了一个return语句,似乎正在正确调用validateFile promise的成功/错误。
答案 0 :(得分:0)
在调用manifest.async之前添加一个return语句修复了这个问题。