Как загрузить несколько файлов на сервер с помощью Javascript - PullRequest
0 голосов
/ 26 января 2012

Я использую PhoneGap и загружаю файл (используя HTTP POST), например,

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
}

Я хочу загрузить несколько файлов, поэтому при обратном вызове я хочу вызвать uploadSingleFile дляперейти к следующему файлу.

Как мне сохранить, какой файл у меня есть?Я использую localStorage для хранения имен файлов.Поэтому я бы хотел сделать это,

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

Так что все, что мне нужно было бы сделать, это сохранить число в конце, 0, 1 и т. Д. Того, где мы находимся.Нужно ли использовать глобальную переменную?Кажется грязным.

Если бы только я мог передать обратный вызов в качестве дополнительного параметра?

Ответы [ 3 ]

0 голосов
/ 12 марта 2014

Сначала добавьте все ваши изображения в массив:

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);
}
0 голосов
/ 10 августа 2015
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 ()

0 голосов
/ 26 января 2012

Хммм. Стоит ли сомневаться в проблеме? Просто сохраните массив имен файлов и используйте JSON.stringify / JSON.parse для преобразования между массивом и строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...