UNPKG

unserver-unify

Version:

132 lines (129 loc) 4.25 kB
'use strict'; angular.module('bamboo').controller('UploadDialogAWSCtrl', function($scope, $uibModal, $uibModalInstance, $timeout, AppConfig, FileUploader, ApiService, setting, $rootScope) { var self = this; $scope.setting = setting; console.log(setting); $scope.awsflag = true; $scope.uploadProgress = 0; $scope.selectedFileChanged = function(file) { $scope.previewImageSrc = file ? URL.createObjectURL(file) : null; }; $scope.recordvoice = function() { var r = $uibModal.open({ templateUrl: 'components/upload/audio_dialog.html', controller: 'AudioRecordCtrl', controllerAs: 'ctrl', backdrop: 'static', }).result; r.then(function(data) { if (data.result) { console.log(data.file); $scope.uploadS3File(data.file); } }); }; $scope.uploadS3File = function(file) { if (file) { AWS.config.update({ accessKeyId: AppConfig.awsKey, secretAccessKey: AppConfig.awsSecret }); AWS.config.region = 'ap-southeast-1'; var bucket = new AWS.S3({ params: { Bucket: 'edushare' } }); var fileSize = Math.round(parseInt(file.size)); if (fileSize > setting.maxSize * 1024) { $uibModalInstance.close({ result: false, message: 'File Size Exceed Limitation! : ' + fileSize + " > " + size * 1024 }); return; } var fileName = setting.fileName; var oldfilename = file.name; if (!fileName) { var randomStr = ""; if (setting.randomFlag) { randomStr = (new Date()).getTime().toString(); var filearray = file.name.split("."); var ext = filearray[filearray.length - 1]; fileName = randomStr + "unify." + ext; } else { fileName = file.name; } //fileName = randomStr + file.name; } var toFileName = setting.resPath + fileName; var params = { Key: toFileName, ContentType: file.type, Body: file, ACL: 'public-read' }; console.log(params); bucket.putObject(params, function(err, data) { if (err) { $uibModalInstance.close({ result: false, message: err.message + err.code }); } else { $uibModalInstance.close({ result: true, message: "Update Successful!", fileName: fileName, originame: oldfilename, }); } }).on('httpUploadProgress', function(progress) { $rootScope.$storage.idleTime = 0; //keep resetting the timeout counter when uploader is working $scope.uploadProgress = Math.round(progress.loaded / progress.total * 100); if (!$scope.$$phase) { $scope.$apply(); } }); } }; function dataURLtoBlob(dataurl, filename) { var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } var blob = new Blob([u8arr], { type: mime }); blob.name = filename; blob.lastModifiedDate = new Date(); return blob; } function handleCompressedImage() { $scope.validupload = false; delete $scope.selectedFile; if (!self.imageobj) { $timeout(handleCompressedImage, 200) return; } // console.log(self.imageobj); var filename = (new Date()).getTime().toString() + ".jpg"; var data = self.imageobj.compressed.dataURL; var tempfile = dataURLtoBlob(data, filename); // console.log(tempfile); $scope.selectedFile = tempfile; // $scope.selectedFile=self.imageobj.compressed.dataURL; // $scope.selectedFile.duration = null; // set null duration to single no-mp4 file $scope.validupload = true; // enable the upload button for othe format } $scope.imageUploaded = function() { console.log("--- uploaded ---"); self.imageobj = null; // console.log(self.imageobj); handleCompressedImage(); }; });