unserver-unify
Version:
211 lines (204 loc) • 6.36 kB
JavaScript
'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();
}
});