Я создаю приложение с ионной структурой (angularjs + cordova).
Я хотел бы, чтобы пользователь мог сделать снимок с помощью своей телефонной камеры и отправить его прямо в хранилище S3 на amazon aws.
Я знаю, как сделать снимок, и получить его base64 и его URI в локальной файловой системе:
Я также знаю, как отправить файл на S3 через ajax с помощью jquery
Теперь проблема в том, что все загруженные файлы, которые я нашел, используют "input type = file". Как я могу передать файл загрузчику, используя его локальный URI или кодировку base64?
Я получил его для работы, преобразовывая файл, возвращенный плагином камеры, в blob, так как файл наследуется от blob, я мог бы отправить его через загрузчик S3, указав имя поддельного локального файла
Вот часть построения blob
$cordovaCamera.getPicture(options).then(function(imageUrl) {
var getFileBlob = function (url, cb) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.responseType = "blob";
xhr.addEventListener('load', function() {
cb(xhr.response);
});
xhr.send();
};
var blobToFile = function (blob, name) {
blob.lastModifiedDate = new Date();
blob.name = name;
return blob;
};
var getFileObject = function(filePathOrUrl, cb) {
getFileBlob(filePathOrUrl, function (blob) {
cb(blobToFile(blob, 'test.jpg'));
});
};
//File created
getFileObject(imageUrl, function (fileObject) {
deferred.resolve({imageUrl : imageUrl, fileObject : fileObject});
});
}, function(err) {
// error
console.warn(err);
deferred.reject(err);
});