Есть ли способ загрузить несколько файлов в один HTTP-запрос с использованием кордовы. Я нашел все решение, которое использует отдельный HTTP-вызов для каждой загрузки изображения.Загружать несколько файлов по одному HTTP-запросу
ответ
Я спросил у Раймонда камден тот же вопрос. Он ответил мне этим замечательным блогом.
Я просто использовал плагин камеры, чтобы вы могли выбрать несколько изображений с устройства. Каждое изображение добавляется в DOM. Вот этот код:
var images = [];
var $imagesDiv;
document.addEventListener("deviceready", init, false);
function init() {
$("#addPicture").on("touchend", selPic);
$imagesDiv = $("#images");
$("#uploadPictures").on("touchend", uploadPics);
}
function selPic() {
navigator.camera.getPicture(function(f) {
var newHtml = "<img src='"+f+"'>";
$imagesDiv.append(newHtml);
images.push(f);
if(images.length === 1) {
$("#uploadPictures").removeAttr("disabled");
}
}, function(e) {
alert("Error, check console.");
console.dir(e);
}, {
quality: 50,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
destinationType: Camera.DestinationType.FILE_URI
});
}
Как вы можете догадаться, кнопка загрузки внизу начнет процесс. Для моего тестирования я настроил скрипт ColdFusion, чтобы просто сохранить закачки во временный каталог. Для того, чтобы добавить немного randonmness, хотя, это будет случайным образом отклонять изображения, выводя 0. В случае успешного добавления, он будет выводить 1.
Вот остальная часть кода:
function uploadPics() {
console.log("Ok, going to upload "+images.length+" images.");
var defs = [];
images.forEach(function(i) {
console.log('processing '+i);
var def = $.Deferred();
function win(r) {
console.log("thing done");
if($.trim(r.response) === "0") {
console.log("this one failed");
def.resolve(0);
} else {
console.log("this one passed");
def.resolve(1);
}
}
function fail(error) {
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
def.resolve(0);
}
var uri = encodeURI("http://localhost/testingzone/test.cfm");
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=i.substr(i.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
var ft = new FileTransfer();
ft.upload(i, uri, win, fail, options);
defs.push(def.promise());
});
$.when.apply($, defs).then(function() {
console.log("all things done");
console.dir(arguments);
});
}
Так, сверху донизу , то, что я делаю, создает массив объектов с обещаниями. Или, более конкретно, их версию jQuery. Затем я запускаю вызов загрузки для каждого изображения, выбранного пользователем. Я проверяю результат с сервера и разрешаю обещание с 0 или 1 в зависимости от того, что сказал сервер.
Наконец, мне позвонили в $ .when обрабатывать ожидания всех этих процессов asynch для завершения. Я на самом деле ничего не показываю, я просто console.dir, но вы могли бы представить, что проверяете результаты и делаете - ну, что имеет смысл.
Надеюсь, это полезно для людей, и, как всегда, дайте мне знать, если у вас есть какие-либо вопросы. Вы можете найти полный исходный код здесь: https://github.com/cfjedimaster/Cordova-Examples/tree/master/multiupload
Ресурс: Raymond Camden's Blog
но здесь каждое изображение загрузка вызовет отдельный HTTP-вызов? Я говорю о загрузке всего изображения в одном HTTP-вызове – manish
с моей стороны, я пытаюсь застегнуть все изображения/файлы в один файл, а затем загрузить единственный файл почтового индекса. Вопрос для этого потенциального решения: найти функцию Cordova зип для обоих андроид & КСН
- 1. angularjs и spring mvc - загружать несколько файлов по одному запросу
- 2. Загружать несколько файлов по отдельности
- 3. Кордова загружать несколько файлов
- 4. Как загрузить несколько файлов по одному
- 5. Node.js обслуживает несколько файлов по одному запросу
- 6. Java, отправляющий несколько файлов по одному
- 7. JQuery/PHP несколько файлов по одному с одним полем ввода
- 8. Загрузите несколько видео по одному
- 9. iOS Загружать сразу несколько файлов
- 10. Перемещение файлов по одному каталогу
- 11. Чтение нескольких файлов по одному
- 12. загружать несколько файлов с помощью java
- 13. отправить несколько файлов по одному запросу в угловом кордовом приложении
- 14. Как скопировать несколько файлов из GitHub по одному запросу
- 15. Работа через несколько файлов по одному в perl?
- 16. Несколько конфигурационных файлов конфигурации (по одному на профиль)
- 17. Как выполнить несколько пакетных файлов по одному в VBA?
- 18. Отправить несколько запросов по одному
- 19. Как загружать и обрабатывать файлы по одному, используя PowerShell
- 20. Загрузка файлов по одному, не все сразу
- 21. Linux - Присоедините несколько файлов CSV к одному
- 22. как загружать несколько файлов в Грааль
- 23. AngularJS загружать несколько файлов из checkbox
- 24. не может загружать несколько файлов в форму
- 25. Amazon S3 консоли: загружать несколько файлов одновременно
- 26. Как сделать рельсы загружать несколько файлов css
- 27. Как правильно загружать несколько внешних SWF-файлов?
- 28. загружать несколько файлов, enctype = "multipart/form-data"
- 29. загружать несколько файлов и отображать массив
- 30. загружать несколько файлов и титров, используя class.upload.php
единственный вариант с использованием нескольких файлов типа входного сигнала для выбора файлов, но он не работает на некоторых версиях андроид – jcesarmobile