UNPKG

unserver-unify

Version:

211 lines (204 loc) 6.36 kB
'use strict'; angular.module('bamboo').controller('UploadDialogOSSCtrl', function($scope,$location, $uibModalInstance, $timeout, FileUploader, $uibModal, LocalConfig, ApiService, setting) { var self = this; $scope.setting = setting; $scope.awsflag = false; console.log("--------------setting---------------"); console.log(setting); var type = "aws"; if (LocalConfig.OSSSERVER) { // convert and upload to aws type = "oss"; } var url; var apiurl = "/resupload"; if (setting.convertFlag) { apiurl = "/resconvert"; } url = '//' + LocalConfig.OSSSERVER + apiurl; if(LocalConfig.OSSSERVER.charAt(0)=='/'){ url=LocalConfig.OSSSERVER+apiurl; } var _protocol = window.location.protocol; if (_protocol.indexOf('https') > -1 ){ this.allowmedia=true; if(LocalConfig.HTTPSFILESERVER) { url = LocalConfig.HTTPSFILESERVER + apiurl; } }else if($location.host().indexOf('localhost')>-1){ this.allowmedia=true; } //console.log(url); var uploader = $scope.uploader = new FileUploader({ url: url, queueLimit: 10, withCredentials: true }); var _info = { action: setting.action, path: setting.resPath, }; if (setting.randomFlag) { _info.random = setting.randomFlag; } uploader.formData.push(_info); uploader.onAfterAddingFile = function(fileItem) { var _filename = fileItem._file.name; var _ext = _filename.split('.'); var _extl = _ext[_ext.length - 1]; console.log(_extl); if ((_extl != 'mp4' || _extl != "webm") && setting.accept == '.mp4' ) { self.needConvert = true; } if (uploader.queue.length > 1) { uploader.removeFromQueue(0); } }; uploader.onCompleteItem = function(item, response) { // console.log(response); if (response.success) { $uibModalInstance.close({ result: true, message: "Update Successful!", fileName: response.fileName, }); } else { $uibModalInstance.close({ result: false, message: response.error }); } }; $scope.webcamcapture = function() { var r = $uibModal.open({ templateUrl: 'components/upload/webcam_dialog.html', controller: 'WebcamCaptureCtrl', controllerAs: 'ctrl', backdrop: 'static', }).result; r.then(function(data) { if (data.result) { console.log(data); uploader.addToQueue(data.file); //console.log(uploader); uploader.uploadAll(); //$scope.uploadS3File(data.file); } }); }; $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) { var url = '//' + LocalConfig.OSSSERVER + '/mp3convert'; if(LocalConfig.OSSSERVER.charAt(0)=='/'){ url=LocalConfig.OSSSERVER+'/mp3convert'; } if (LocalConfig.HTTPSFILESERVER) { url = LocalConfig.HTTPSFILESERVER + '/mp3convert'; } //console.log(data.file); // uploader.formData[0].path=""; // uploader uploader.url=url; uploader.formData[0].directUpload=true; uploader.addToQueue(data.file); //console.log(uploader); uploader.uploadAll(); console.log(uploader) } }); }; $scope.recordvideo = function() { var r = $uibModal.open({ templateUrl: 'components/upload/video_dialog.html', controller: 'VideoRecordCtrl', controllerAs: 'ctrl', backdrop: 'static', }).result; r.then(function(data) { if (data.result) { uploader.addToQueue(data.file); uploader.uploadAll(); } }); }; 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; console.log("--- handleCompressedImage ---"); if (!self.imageobj) { $timeout(handleCompressedImage, 200) return; } console.log("--- handleCompressedImage finish---"); console.log(self.imageobj); // 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); var files = [tempfile]; uploader.addToQueue(files); // $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(); } this.convertMp4 = function() { self.needConvert = true; if (!setting.id && setting.idcallback) { setting.idcallback(self.currentFile.name, function(result) { console.log(result); var id = result._id; $scope.setting.id = id; _convertmp4(id); }) } else { _convertmp4(setting.id); } } function _convertmp4(id) { // console.log(uploader); var url = '//' + LocalConfig.OSSSERVER + '/mp4convert'; if(LocalConfig.OSSSERVER.charAt(0)=='/'){ url=LocalConfig.OSSSERVER+'/mp4convert'; } if (LocalConfig.HTTPSFILESERVER) { url = LocalConfig.HTTPSFILESERVER + '/mp4convert'; } uploader.url = url; for (var i = 0; i < uploader.queue.length; i++) { var item = uploader.queue[i]; item.url = url; item.formData[0].id = id; } console.log(uploader); uploader.uploadAll(); } });