unserver-unify
Version:
132 lines (129 loc) • 4.25 kB
JavaScript
'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();
};
});