angular.module('app.main', []) .controller('MainCtrl', function($scope, $http, fileReader) { $scope.response = ""; $scope.imageSrc=""; $scope.uploadFile = function() { var blob = dataURItoBlob(selectedImg); $scope.img_file= blob; console.log("$scope.img_file"); console.log($scope.img_file); var fd = new FormData(); //Take the first selected file fd.append("file", $scope.img_file); console.log(fd); $http({ url: urlapi + 'predict', method: "POST", headers: { "Content-Type": undefined }, data: fd }) .then(function(data) { console.log("response: "); console.log(data.data); // response reaction $scope.response= data.data.result; }, function(response) { // optional // failed console.log(response); }); }; function dataURItoBlob(dataURI) { // convert base64/URLEncoded data component to raw binary data held in a string var byteString; if (dataURI.split(',')[0].indexOf('base64') >= 0) byteString = atob(dataURI.split(',')[1]); else byteString = unescape(dataURI.split(',')[1]); // separate out the mime component var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; // write the bytes of the string to a typed array var ia = new Uint8Array(byteString.length); for (var i = 0; i < byteString.length; i++) { ia[i] = byteString.charCodeAt(i); } return new Blob([ia], {type:mimeString}); } }) .directive("ngFileSelect", function(fileReader, $timeout) { return { scope: { ngModel: '=' }, link: function($scope, el) { function getFile(file) { fileReader.readAsDataUrl(file, $scope) .then(function(result) { $timeout(function() { $scope.ngModel = result; selectedImg = result; }); }); } el.bind("change", function(e) { var file = (e.srcElement || e.target).files[0]; getFile(file); }); } }; }) .factory("fileReader", function($q, $log) { var onLoad = function(reader, deferred, scope) { return function() { scope.$apply(function() { deferred.resolve(reader.result); }); }; }; var onError = function(reader, deferred, scope) { return function() { scope.$apply(function() { deferred.reject(reader.result); }); }; }; var onProgress = function(reader, scope) { return function(event) { scope.$broadcast("fileProgress", { total: event.total, loaded: event.loaded }); }; }; var getReader = function(deferred, scope) { var reader = new FileReader(); reader.onload = onLoad(reader, deferred, scope); reader.onerror = onError(reader, deferred, scope); reader.onprogress = onProgress(reader, scope); return reader; }; var readAsDataURL = function(file, scope) { var deferred = $q.defer(); var reader = getReader(deferred, scope); reader.readAsDataURL(file); return deferred.promise; }; return { readAsDataUrl: readAsDataURL }; });