2017-07-07 164 views
0

我試圖通過讀取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); 
    }); 

編輯

我錯過了一個return語句之前調用manifest.async,似乎是正確調用validateFile承諾的成功/錯誤了。

回答

0

在調用manifest.async之前添加return語句修復了問題。