2012-01-26 31 views
0

我使用的PhoneGap,並上載文件(使用HTTP POST)這樣,如何上傳多個文件服務器使用JavaScript

function uploadSingleFile() 
{ 
    var ft = new FileTransfer(); 
    // set up parameters etc 
    ft.upload(imageName, "http://serviceaddress/UploadFile.ashx", win, fail, options); 
} 

function win(r) 
{ 
    // success callback 
} 

我想上傳muliple文件,所以在成功回調我想調用uploadSingleFile移動到下一個文件。

如何保存我要使用的文件?我正在使用localStorage來存儲文件名稱。所以,我想這樣做,

upload file localStorage.file0 
upload file localStorage.file1 
upload file localStorage.file2 

因此,所有我需要做的將是存儲在年底,0,1,我們是最多的地方等的數量。我需要使用全局變量嗎?似乎凌亂。

如果我只能通過成功回調一個數字作爲附加參數?

回答

0

嗯。這個問題值得懷疑嗎?只需存儲一組文件名並使用JSON.stringify/JSON.parse進行數組和字符串之間的轉換。

+0

這是不真的是我所關心的問題的一部分。此調用是異步的,因此我必須確保一次只能上傳一個。如果我等到回調被調用,直到我開始下一個回調,那麼我怎麼知道我要做哪一個。 – peter

+1

這將是使用全局變量或使用其中的代碼製作類的情況。也許我會嘗試。 – peter

-1

首先你的圖像添加到陣列:

var TemplstImg = []; 

function UploadImages() 
{ 

    var lstImages = [localStorage.file0,localStorage.file1,localStorage.file2]; 
    TemplstImg=lstImages ; 

    if (TemplstImg.length > 0) { 
     var img = TemplstImg.pop(); 
     uploadPhoto(img); 
    } 
} 

function uploadPhoto(imageURI) { 

    imageURI = imageURI.ImageFile; 

    var options = new FileUploadOptions(); 
    options.fileKey = "file"; 
    options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1); 
    options.mimeType = "image/jpeg"; 

    var params = {}; 
    params.value1 = "test"; 
    params.value2 = "param"; 

    options.params = params; 

    var ft = new FileTransfer(); 

    ft.upload(imageURI, yourServerPath, winImg, failImg,options); 
} 

function winImg(r) { 

    if (TemplstImg.length == 0) { 
     alert ('Done , all files was uploaded'); 

    } else { 
     var img = TemplstImg.pop(); 
     uploadPhoto(img); 
    } 
} 

function failImg(error) { 

    alert("failImg An error has occurred: Code = " + error.code); 
    console.log("upload error source " + error.source); 
    console.log("upload error target " + error.target); 
} 
+1

這不會一次上傳多個文件,它會爲每個單個文件執行一次POST。 – etuardu

0
function uploadSingleFile(fileName) { 

    var ft = new FileTransfer(); 

    ft.upload("fileUrl", 
      "server", 
      function (result , fileName) { 
       console.log(fileName + ' has been uploaded successfully to server');           
      }, 
      function (error) { 
       console.log(error); 
      }, 
      {fileName: fileName, fileKey: "file"}); 
} 

function uploadFiles() { 
    var files = JSON.parse(localStorage.files); 

    for(var i=0; i < files.length; i++) { 
    uploadSingleFile(files[i]); 
    } 
} 

您可以發送文件的索引作爲參數傳遞給uploadSingleFile(),然後使用它的console.log()

相關問題