2014-01-24 53 views
0

我的問題是如何解決以下我的方法和明白爲什麼不工作:沒有經歷環/上傳後,不刪除文件

智能手機有10個音頻文件。 LOOP FOR檢查所有的音頻文件,然後去ft.upload。這是錯誤的,做10次相同的第10個音頻文件(最後一個音頻文件)。 LOOP FOR如何處理第一個文件,然後上傳並移除它並保持循環,直到文件夾爲空? entry.remove(success, fail);不會在我的文件成功上傳後刪除文件。

任何建議將有所幫助。

function uploadAudioFiles() { 
    var localFolder = "Sounds"; 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) { 
     fs.root.getDirectory(localFolder, {create:false}, function(dirEntry){ 
      var dirReader = dirEntry.createReader(); 
      dirReader.readEntries(function(entries) { 
       for(var i = 0; i < entries.length; i++) { 
        console.log(entries); 
        var entry = entries[i]; 
         //print all the audio 1 to 10. 
        var ft = new FileTransfer(); 
        if (entry.isFile){ 
         var path = entry.fullPath; 
         var name = entry.name; 
       //var reader = new FileReader(); 
       //reader.readAsText(path); 
       //print 10x the same audio 10th on success. 
       ft.upload(path, "http://111.111.11.1:8080/hello/world/", function(result) { 
        console.log('Upload success: ' + result.responseCode); 
        console.log(result.bytesSent + ' bytes sent'); 
        console.log("path:" + path); 
        //it calls success, but is not removing on my smartphone 
        fileSystem.root.getFile(path, {create: false, exclusive: false}, success, fail); 
       }, 
       function(error) { 
        console.log('Error uploading file ' + path + ': ' + error.code); 
       }, 
       { fileName: name }); 
      } 
     } 
    }, fail); 
     }, fail); 
    }); 
} 

function success(entry) { 
    console.log("Removal succeeded" + entry.name + entry.fullPath + entry); 
} 
function fail(error) { 
    alert('Error removing file: ' + error.code); 
} 
+0

老兄醒來,我很好奇,看看它是否有效。 – Jake

+0

對不起,我週末在旅行。 – fsi

回答

1

試試這個。將您的upload-call封裝在一個匿名函數中,您立即使用該條目作爲參數執行該函數。這樣你可以「陷入」匿名函數中的當前輸入值。問題可能在於,由於條目的上傳是在回調函數中完成的,因此在循環的每次迭代中都會覆蓋條目的值。我以前遇到類似的問題,他們可以像這樣解決。我希望我有正確的所有括號。

if (entry.isFile){ 
    var path = entry.fullPath; 
    var name = entry.name; 
    (function(currentPath, currentName) { 
     ft.upload(currentPath, "http://111.111.11.1:8080/hello/world/", function(result) { 
      console.log('Upload success: ' + result.responseCode); 
      console.log(result.bytesSent + ' bytes sent'); 
      console.log("path:" + currentPath); 
      //it calls success, but is not removing on my smartphone 
      fileSystem.root.getFile(currentPath, {create: false, exclusive: false}, success, fail); 
     }, 
     function(error) { 
      console.log('Error uploading file ' + currentPath + ': ' + error.code); 
     }, 
     { fileName: currentName }); 
    })(path, name); 
} 
+0

好的,調試過了,但是由於ft.upload仍然在做循環。 – fsi

+0

並以某種方式上傳!我所做的只是創建另一個帶有ft.upload內容的函數,並在每次檢查時檢查它是否具有文件調用功能。儘管我不喜歡我的代碼。而且它不會刪除文件存儲。 – fsi

+0

好的,也許你必須做更深層次的包裝,就在ft.upload周圍。我將編輯我的帖子。 – Jake