Загрузка файла Flowjs - Ionic и ngCordova
Я пытаюсь загрузить изображение из моего приложения на сервер, я хотел использовать плагин для передачи файлов ngCordova, но меня не устраивает информация о прогрессе, которую дает этот плагин, поэтому я решил пойти с Flowjs, но я не удается создать правильный объект файла HTML5 из URL-адреса файла, который у меня есть. Это мой код
window.resolveLocalFileSystemURL(photo, function(fileEntry){
fileEntry.file(function(file){
$scope.flow.addFile(file);
$scope.flow.upload();
$scope.flow.on('fileProgress', function (file, chunk){
console.log(file);
console.log(chunk);
});
$scope.flow.on('error', function(a,b){
console.log(a);
console.log(b);
});
});
}, function(err){
console.log(err);
});
Где фотография - это путь к файловой системе для файла. Я получаю ошибку 400(неверный запрос), когда я пытаюсь выполнить эту загрузку, я уверен, что серверная часть верна, потому что я использую ее со многими другими приложениями Flowjs. Я думаю, что объект, возвращаемый функцией fileEntry.file(), не является правильным файловым объектом HTML5, возможно, создание BLOB-объекта из URL-адреса файла может решить проблему, но я не понимаю, как его создать. Я хотел бы, чтобы мой код работал, прежде чем пытаться создать Blob, но если это единственное решение, хорошо...
1 ответ
Хорошо, я нашел решение, которое работает, не знаю, будет ли это наилучшим вариантом, и любые улучшения приветствуются.
window.resolveLocalFileSystemURL(photo, function(fileEntry){
fileEntry.file(function(file){
var reader = new FileReader();
reader.onload = function(){
var blob = new Blob([reader.result], {type: 'application/octet-stream'});
blob.name = 'image.jpg';
$scope.flow.addFile(blob);
$scope.flow.upload();
$scope.flow.on('fileProgress', function (file, chunk){
console.log(file);
console.log(chunk);
});
$scope.flow.on('error', function(a,b){
console.log(a);
console.log(b);
});
};
reader.readAsArrayBuffer(file);
});
}, function(err){
console.log(err);
});