(function () { 'use strict'; //service that handles uploading of files and images var serviceId = 'myFormsFileUpload'; angular.module('myformsAdmin').factory(serviceId, ['config', '$q', 'Upload', myFormsFileUpload]); function myFormsFileUpload(config, $q, Upload) { var service = { uploadImage: uploadImage }; return service; //upload an image (to Cloudinary) function uploadImage(obj, file, success, progress, error, uploadPath) { var e = file.$error; var data = { upload_preset: config.cloudinaryUploadPreset, tags: 'myforms' }; var upload = Upload.upload({ url: config.cloudinaryApiBaseUrl + config.cloudinaryName + uploadPath, fields: data, file: file }); upload.progress(function (evt) { // Math.min is to fix IE which reports 200% sometimes file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total)); }); return upload.then(function (response) { success(obj, response.data); return response.data; }, function (response) { if (response.status > 0) { var errorMsg = response.status + ': ' + response.data; return error(); } }); } } })();