123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931 |
- (function(){
-
- var $ = document.querySelectorAll.bind(document);
-
- Element.prototype.on = Element.prototype.addEventListener;
-
- NodeList.prototype.on = function (event, fn) {
-
- [].forEach.call(this, function (el) {
- el.on(event, fn);
- });
- return this;
- };
-
- Ks3.config.AK = '+vB0RuO22DeeanAAb0ig';
- Ks3.config.SK = '3kbTp8pg+LymO84/ZyxG/od/3FeVDjWt+8/m5iBc';
- Ks3.config.region = 'BEIJING';
- Ks3.config.bucket = 'teaseyoulearn';
- var bucketName = Ks3.config.bucket;
- var filelistNode = document.getElementById('filelist');
-
- var policy = {
- "expiration": new Date(getExpires(3600)*1000).toISOString(),
- "conditions": [
- ["eq","$bucket", bucketName],
- ["starts-with", "$key", ""],
- ["starts-with","$acl", "public-read"],
- ["starts-with", "$name", ""],
- ["starts-with", "$x-kss-meta-custom-param1",""],
- ["starts-with", "$x-kss-newfilename-in-body",""],
- ["starts-with", "$Cache-Control",""],
- ["starts-with", "$Expires", ""],
- ["starts-with", "$Content-Disposition", ""],
- ["starts-with", "$Content-Type",""],
- ["starts-with", "$Content-Encoding",""]
- ]
- };
-
- var stringToSign = Ks3.Base64.encode(JSON.stringify(policy));
-
- var signatureFromPolicy = Ks3.b64_hmac_sha1(Ks3.config.SK, stringToSign);
- console.log('signatureFromPolicy:' + signatureFromPolicy);
- var ks3UploadUrl;
-
- if (window.location.protocol === 'https:') {
- Ks3.config.protocol = 'https';
- } else {
- Ks3.config.protocol = 'http';
- }
- ks3UploadUrl = Ks3.config.protocol + '://' + Ks3.ENDPOINT[Ks3.config.region] + '/';
- var ks3Options = {
- KSSAccessKeyId: Ks3.config.AK,
- policy: stringToSign,
- signature: signatureFromPolicy,
- bucket_name: bucketName,
- key: '${filename}',
- acl: "public-read",
- uploadDomain: ks3UploadUrl + bucketName,
- autoStart: false,
- 'x-kss-meta-custom-param1': 'Hello',
- 'x-kss-newfilename-in-body': true,
- 'Cache-Control': 'max-age=600',
- 'Expires': new Date(getExpires(600) * 1000),
- 'Content-Disposition' :'attachment;filename=',
-
- onUploadProgressCallBack: function(uploader, obj){
- var itemNode = document.getElementById(obj.id);
- var resultNode = itemNode.querySelector('span');
- resultNode.innerHTML = obj.percent + "%";
- },
- onFileUploadedCallBack: function(uploader, obj){
- var itemNode = document.getElementById(obj.id);
- var resultNode = itemNode.querySelector('span');
- resultNode.innerHTML = "完成";
-
- var linkNode = itemNode.querySelector('a');
- linkNode.href = ks3Options.uploadDomain + "/" + obj.name;
- linkNode.innerHTML = obj.name;
-
- var adpBtn = document.createElement("button");
- adpBtn.innerHTML = '添加水印';
- adpBtn.onclick = function(){
- var objKey = encodeURIComponent(obj.name);
- var url = ks3UploadUrl + bucketName + '/' + objKey + '?adp' ;
- var kssHeaders = {
- 'kss-async-process': 'tag=imgWaterMark&type=2&dissolve=65&gravity=NorthEast&text=6YeR5bGx5LqR&font=5b6u6L2v6ZuF6buR&fill=I2JmMTcxNw==&fontsize=500&dy=10&dx=20|tag=saveas&bucket=' + bucketName + '&object=imgWaterMark-' + obj.name,
- 'kss-notifyurl': 'http://10.4.2.38:19090/'
- };
- var signature = Ks3.generateToken(Ks3.config.SK, bucketName, objKey + '?adp', 'PUT','', kssHeaders, '');
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
- alert("put请求成功");
- var waterMarkImgLink = document.createElement('a');
- waterMarkImgLink.setAttribute('target','_blank');
- waterMarkImgLink.style.marginLeft = "30px";
- var processedImgName = "imgWaterMark-" + obj.name;
- waterMarkImgLink.innerHTML = processedImgName;
-
- var timeStamp = getExpires(600);
-
- var expiresSignature = Ks3.generateToken(Ks3.config.SK, bucketName, processedImgName, 'GET', '' ,kssHeaders, timeStamp);
- setTimeout(function(){
- waterMarkImgLink.href = ks3UploadUrl + bucketName + '/imgWaterMark-' + obj.name + '?KSSAccessKeyId=' + encodeURIComponent(Ks3.config.AK) + '&Expires=' + timeStamp + '&Signature=' + encodeURIComponent(expiresSignature);
- itemNode.appendChild(waterMarkImgLink);
- },1000);
- } else{
-
- }
- }
- };
- xhr.open("put", url, true);
- xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
- xhr.setRequestHeader('kss-async-process', kssHeaders['kss-async-process']);
- xhr.setRequestHeader('kss-notifyurl',kssHeaders['kss-notifyurl']);
- xhr.send(null);
- };
- itemNode.appendChild(adpBtn);
- },
- onFilesAddedCallBack: function(uploader, objArray){
- for (var i = 0 ; i < objArray.length ; i++){
- var itemNode = document.createElement("li");
- itemNode.innerHTML = objArray[i].name + "<span style='margin:5px 20px;'></span><a style='margin-right: 20px;' target='_blank'></a>";
- itemNode.id = objArray[i].id;
- filelistNode.appendChild(itemNode);
- }
- },
- onBeforeUploadCallBack: function(uploader, obj) {
-
-
-
-
- },
- onErrorCallBack: function(uploader, errObject){
- if(errObject.status === 413 || errObject.status === 415){
- var responseXML = Ks3.parseStringToXML(errObject.response );
- alert(Ks3.xmlToJson(responseXML)['Error']['Message']);
- }else{
- alert(errObject.code + " : Error happened in uploading " + errObject.file.name + " ( " + errObject.message + " )");
- }
- }
- };
- var pluploadOptions = {
- browse_button: 'browse',
- drop_element: document.body,
- filters: {
- mime_types : [
- { title : "Video files", extensions : "mp4,mov,qt,ts,rmvb,rm,avi,flv,mkv,wmv,mpg,mpeg,m2v,m4v,3gp,3g2,webm,vob,ogv,ogg" }
- ],
- max_file_size : '2gb',
- prevent_duplicates : true
- }
- }
- var tempUpload = new ks3FileUploader(ks3Options, pluploadOptions);
- document.getElementById('start-upload').onclick = function (){
- console.log("start...");
- tempUpload.uploader.start();
- }
-
- document.getElementById('get-bucket').onclick = function() {
- Ks3.listObject({
- 'max-keys': '15'
- },function(json) {
- document.getElementById('responsexml').innerHTML = JSON.stringify(json, null, 4);
- });
- };
-
- (function listObjects() {
- Ks3.listObject(
- {
- Bucket: bucketName,
- 'max-keys': '10',
- delimiter:'|'
- },function(json) {
-
- var tableEle = document.getElementById('exampleForDeleteFile');
- var objectArray = json['ListBucketResult']['Contents'];
- for(var i= 0, len = objectArray.length; i< len; i++) {
- var item = document.createElement("tr");
- var objKey = objectArray[i]['Key'];
- item.id = objKey;
- item.innerHTML = '<td>' + objKey + '</td><td>' + objectArray[i]['Size']/1024 + ' KB </td>' + '<td>' + new Date(objectArray[i]['LastModified']).toLocaleString() + '</td>' + '<td class="del-opt">删除</td>';
- tableEle.appendChild(item);
- };
- $('.del-opt').on('click', function(e) {
- var key = this.parentNode.firstChild.innerHTML;
- Ks3.delObject(
- {
- Key: key
- }, function(status) {
- if( status === 204) {
- alert( key + " 删除成功");
- var ele = document.getElementById(key);
- ele.parentNode.removeChild(ele);
- }
- });
- });
- });
- })();
-
- document.getElementById('utp').onclick = function() {
- var imgFile = document.getElementById('imgFile').files[0];
- var formData = new FormData();
- var objKey = imgFile.name;
- formData.append("key", objKey);
- formData.append("file", imgFile);
-
- var timeStamp = getExpires( 10 * 60 );
- var url = 'http://127.0.0.1:3000/' + bucketName + '?t=' + timeStamp ;
- var kssHeaders = {
- 'kss-async-process': 'tag=imgWaterMark&type=2&dissolve=65&gravity=NorthEast&text=6YeR5bGx5LqR&font=5b6u6L2v6ZuF6buR&fill=I2JmMTcxNw==&fontsize=500&dy=10&dx=20|tag=saveas&bucket=' + bucketName + '&object=imgWaterMark-' + objKey,
- 'kss-notifyurl': 'http://10.4.2.38:19090/',
- 'x-kss-storage-class' : 'STANDARD'
- };
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
- alert("上传触发处理成功");
- var waterMarkImg = document.getElementById('display-adp-result').firstChild;
- console.log('Signature:' + xhr.responseText);
- console.log('timestamp:' + timeStamp);
- waterMarkImg.src = 'http://kss.ksyun.com/' + bucketName + '/imgWaterMark-' + objKey + '?KSSAccessKeyId=' + encodeURIComponent(Ks3.config.AK) + '&Expires=' + timeStamp + '&Signature=' + encodeURIComponent(xhr.responseText);
- }else{
-
- }
- }
- };
- function progressFunction(e) {
- var progressBar = document.getElementById("progressBar");
- if (e.lengthComputable) {
- progressBar.max = e.total;
- progressBar.value = e.loaded;
- }
- }
- xhr.upload.addEventListener("progress", progressFunction, false);
- xhr.open("put", url, true);
-
- xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK );
- xhr.setRequestHeader('kss-async-process', kssHeaders['kss-async-process']);
- xhr.setRequestHeader('kss-notifyurl',kssHeaders['kss-notifyurl']);
- xhr.setRequestHeader('x-kss-storage-class', kssHeaders['x-kss-storage-class']);
- xhr.send(formData);
- };
-
- document.getElementById('utp2').onclick = function() {
- var file = document.getElementById('imgFile2').files[0];
- var objKey = Ks3.encodeKey(file.name);
- var contentType = file.type;
- Ks3.putObject({
- Key: 'image/'+objKey,
- File: file,
- ACL: 'public-read',
- ProgressListener: progressFunction,
- Sinature: ''
- },function(err) {
- if(err) {
- alert(JSON.stringify(err));
- }else{
- alert('put上传成功');
- }
- });
- function progressFunction(e) {
- var progressBar = document.getElementById("progressBar2");
- if (e.lengthComputable) {
- progressBar.max = e.total;
- progressBar.value = e.loaded;
- }
- }
- };
-
- document.getElementById('downloadBigFileBtn').onclick = function() {
- blockDownload(
- {
- Bucket: 'sanrui',
- Key:'jssdk/book.pdf'
- },
- function(err, results) {
- if(err) {
- console.log(err);
- }
- console.log(JSON.stringify(results));
- });
- }
- document.getElementById('stopDownload').onclick = function() {
- Ks3.config.stopFlag = true;
- };
-
- var fileToBeUpload;
- document.getElementById('uploadBigFile').onclick = function() {
-
- var file = document.getElementById('bigFile').files[0];
- fileToBeUpload = file.name;
-
-
- multipartUpload({
- Bucket: bucketName,
- Key: fileToBeUpload,
-
- ACL: 'public-read',
-
- File: file,
- TotalSize: file.size,
- Signature: '',
- }, function(err, res){
- if(err) {
- if(err.msg != 'stop') {
- console.error(err);
- alert(err.msg);
- }else{
- console.log(err);
- }
- }else{
- console.log('res: ' + JSON.stringify(res));
- }
- });
- }
- document.getElementById('suspendMultipartUpload').onclick = function() {
- Ks3.config.stopFlag = true;
- };
- document.getElementById('cancelMultipartUpload').onclick = function() {
-
- Ks3.config.stopFlag = true;
-
- if(Ks3.config.currentUploadId) {
- Ks3.abort_multipart_upload({
- Bucket: bucketName,
- Key:fileToBeUpload,
- UploadId: Ks3.config.currentUploadId
- },function(err,res) {
- if(err) {
- console.log(err);
- }else{
- console.log('res: ' + JSON.stringify(res));
-
- var len = localStorage.length;
- for(var i=0; i< len; i++) {
- var itemKey = localStorage.key(i);
-
- if(typeof itemKey === 'string' && (new String(itemKey)).endWith(bucketName + '-' + Ks3.encodeKey(fileToBeUpload))) {
- localStorage.removeItem(itemKey);
- }
- }
- var progressBar = document.getElementById("multipartUploadProgressBar");
- progressBar.value = 0;
- }
- });
- }
- };
- })();
- function multipartUpload (params, cb) {
- var config;
- var bucketName = params.Bucket || Ks3.config.bucket || '';
- var key = params.Key || params.File.name;
- key = Ks3.encodeKey(key);
- var region = params.region || Ks3.config.region;
- if (region ) {
- Ks3.config.baseUrl = Ks3.ENDPOINT[region];
- }
- var file = params.File;
- var totalSize = file.size;
- var progressKey = getProgressKey(file.name, file.lastModified, bucketName, key);
- console.log(progressKey);
-
- var contentType = params.ContentType || '';
- var progressBar = document.getElementById("multipartUploadProgressBar");
-
- console.log(async);
- async.auto({
-
- init: function(callback) {
-
- Ks3.config.stopFlag = false;
- if ( !localStorage[progressKey]) {
- configInit(file, progressKey, function(err) {
- callback(err);
- })
- } else {
- callback(null);
- }
- },
- show: ['init', function(callback) {
- console.log(' 开始上传文件: ' + progressKey)
- config = JSON.parse(localStorage.getItem(progressKey));
- progressBar.max = config['count'];
- progressBar.value = config['index'];
- callback(null);
- }],
-
- getUploadId: ['init', function(callback) {
- config = JSON.parse(localStorage.getItem(progressKey));
- var uploadId = config['uploadId'];
- if ( !! uploadId) {
- callback(null, uploadId);
- } else {
- Ks3.multitpart_upload_init(params, function(err, uploadId) {
- if(err) {
- callback(err);
- }else {
- config['uploadId'] = uploadId;
- localStorage.setItem(progressKey, JSON.stringify(config));
- callback(null, uploadId);
- }
- });
- }
- }],
-
- upload: ['getUploadId', function(callback, result) {
- if(result.getUploadId) {
- var uploadId = result.getUploadId;
- Ks3.config.currentUploadId = uploadId;
- config = JSON.parse(localStorage.getItem(progressKey));
- var count = config['count'];
- var index = config['index'];
- var chunkSize = config['chunkSize'];
- var currentRetries = config['retries'];
- up();
- }else {
- callback({'msg':'no uploadId'});
- }
-
- function retry(err) {
- console.log('upload ERROR:', err);
- if (currentRetries > Ks3.config.retries) {
- throw err;
- } else {
- currentRetries = currentRetries + 1;
- config['retries'] = currentRetries;
- localStorage.setItem(progressKey, JSON.stringify(config));
- console.log('第 ' + currentRetries + ' 次重试');
- up();
- }
- }
-
- function up() {
- console.log('正在上传 ', 'index: ' + index);
- var start = (index - 1) * chunkSize;
-
- if (index <= count) {
- getFileContent(file, chunkSize, start, function(body) {
- delete params.File;
- params.UploadId = uploadId;
- params.PartNumber = index;
- params.body = body;
- params.type = contentType;
- console.log('正在上传第 ', index, ' 块,总共: ', + count + ' 块');
- try {
- Ks3.upload_part(params, function(err, partNumber, etag) {
- if (err) {
- if(err.status == 413 || err.status == 415) {
- callback(err);
- }else {
- retry(err);
- }
- } else {
- if(!Ks3.config.stopFlag) {
- config['index'] = index;
- progressBar.value = config['index'];
- config['etags'][index] = etag;
- localStorage.setItem(progressKey, JSON.stringify(config));
- index = index + 1;
- up();
- }else {
- callback({
- msg: "stop"
- });
- }
- }
- });
- } catch(e) {
- retry(e);
- }
- })
- } else {
- console.log('发送合并请求');
- delete params.File;
- params.UploadId = uploadId;
- params.body = generateCompleteXML(progressKey);
- Ks3.upload_complete(params, function(err, res) {
- if (err) throw err;
- callback(err, res);
- })
- }
- };
- }]
- },
- function(err, results) {
- if (err) {
-
- }else{
-
- localStorage.removeItem(progressKey);
- }
- if (cb) {
- cb(err, results);
- }
- });
- }
- function getProgressKey(name, lastModified, bucket, key) {
- var result = name + "-" + lastModified + "-" + bucket + "-" + key;
- return result;
- }
- function configInit(file, progressKey, cb) {
- var fileSize = file.size;
- var count = parseInt(fileSize / Ks3.config.chunkSize) + ((fileSize % Ks3.config.chunkSize == 0 ? 0: 1));
- if (count == 0) {
- cb({
- msg: 'The file is empty.'
- })
- } else {
- config = {
- name: file.name,
- size: fileSize,
- chunkSize: Ks3.config.chunkSize,
- count:count,
- index: 1,
- etags:{},
- retries: 0
- }
- localStorage.setItem(progressKey, JSON.stringify(config));
- if(cb) {
- cb(null);
- }
- }
- }
- function getFileContent(file, chunkSize, start, cb) {
- var start = start;
- var bufferSize = file.size;
- var index = start / chunkSize;
- console.log('正在读取下一个块的文件内容 index:' + index);
- if (start + chunkSize > bufferSize) {
- chunkSize = bufferSize - start;
- }
- console.log('分块大小:', chunkSize);
- if(file.slice) {
- var blob = file.slice(start, start + Ks3.config.chunkSize);
- }else if(file.webkitSlice) {
- var blob = file.webkitSlice(start, start + Ks3.config.chunkSize);
- }else if(file.mozSlice) {
- var blob = file.mozSlice(start, start + Ks3.config.chunkSize);
- }else{
- throw new Error("blob API doesn't work!");
- }
- var reader = new FileReader();
- reader.onload = function(e) {
- cb(e.target.result);
- };
- reader.readAsArrayBuffer(blob);
- }
- function generateCompleteXML(progressKey) {
- var content = JSON.parse(localStorage.getItem(progressKey));
- var index = content.index;
- var str = '';
- if (index > 0) {
- str = '<CompleteMultipartUpload>';
- for (var i = 1; i <= index; i++) {
- str += '<Part><PartNumber>' + i + '</PartNumber><ETag>' + content.etags[i] + '</ETag></Part>'
- }
- str += '</CompleteMultipartUpload>';
- }
- return str;
- }
- function blockDownload (params, cb) {
- var bucketName = params.Bucket || Ks3.config.bucket;
-
- var key = params.Key;
- var filePath = params.filePath || bucketName + '-' + key.replace('/','-') ;
- if (!key) {
- alert('require the object Key');
- }
- var TEMP_SPACE = 1024 * 1024 * 1024 ;
- window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
- function onError(e) {
- console.log('Error', e);
- }
-
- var downFileName = filePath + '.download';
- var config = null;
-
- var chunk = params.chunk || 1 * 1024 * 100;
- var count = 0;
- var index = 0;
- async.auto({
-
- init: function(callback) {
-
- function resetConfig(conf) {
- localStorage.setItem(filePath, JSON.stringify(conf));
- index = 0;
-
- window.requestFileSystem(window.TEMPORARY, TEMP_SPACE, function(fs) {
- fs.root.getFile(downFileName, {create: false}, function(fileEntry) {
- fileEntry.remove(function() {
- console.log(downFileName + ' File removed.');
- }, onError);
- }, onError);
- }, onError);
- };
-
- Ks3.config.stopFlag = false;
-
- console.log('远程获取元数据');
- Ks3.headObject(params, function(err, res) {
- if (err) {
- callback(err);
- } else {
- var length = res.getResponseHeader('content-length');
- count = parseInt(length / chunk) + (length % chunk == 0 ? 0 : 1);
- if (count == 0) {
- callback({
- msg: '文件大小为0'
- })
- } else if (localStorage && localStorage[filePath]) {
- config = JSON.parse(localStorage.getItem(filePath));
- if (config['lastModifyTime'] == res.getResponseHeader('Last-Modified')) {
- console.log('本地读取数据');
- count = config['count'];
- index = config['index'];
- } else {
- config = {
- "BUCKET": bucketName,
- "KEY": key,
- "path": filePath,
- "chunk": chunk,
- "count": count,
- "index": 0,
- "lastModifyTime": res.getResponseHeader('Last-Modified')
- };
- resetConfig(config);
- }
- } else {
- config = {
- "BUCKET": bucketName,
- "KEY": key,
- "path": filePath,
- "chunk": chunk,
- "count": count,
- "index": 0,
- "lastModifyTime": res.getResponseHeader('Last-Modified')
- };
- resetConfig(config);
- }
- callback(null);
- }
- });
- },
-
- down: ['init', function(callback, result) {
-
- var progressBar = document.getElementById("downloadProgressBar");
- progressBar.max = count;
- function writeToFileSystem(blob, path) {
- window.requestFileSystem(window.TEMPORARY, TEMP_SPACE, function(fs) {
- fs.root.getFile(path, {create: true}, function(fileEntry) {
- fileEntry.createWriter(function(writer) {
- var len = writer.length;
- writer.seek(len);
- console.log('download file length: ' + len);
- writer.write(blob);
- }, onError);
- }, onError);
- }, onError);
- }
- var downHandler = function() {
- if(Ks3.config.stopFlag) {
- callback({
- msg: 'stop'
- });
- }else{
-
- progressBar.value = index;
- var percent = index + '/' + count;
- document.getElementById('downloadPercent').innerText = percent;
- if (index + 1 > count) {
- console.log('下载结束')
- callback(null);
- } else {
- console.log('进行下载:', index, '/', count);
- Ks3.getObject({
- Bucket:bucketName,
- Key: key,
- range: 'bytes=' + index * chunk + '-' + ((index + 1) * chunk - 1)
- },
- function(err, data, res) {
- if (err) {
- callback(err, data);
- } else {
- writeToFileSystem(data, downFileName);
- index = index + 1;
- config['index'] = index;
- localStorage.setItem(filePath, JSON.stringify(config));
- downHandler();
- }
- });
- }
- }
- };
- downHandler();
- }]
- },
- function(err, results) {
-
- function copyFileInBrowserRootToUserOS(fromFilePath, toFilePath) {
- window.requestFileSystem(window.TEMPORARY, TEMP_SPACE, function(fs) {
- fs.root.getFile(fromFilePath, {create: false}, function(fileEntry) {
- fileEntry.file(function(file) {
-
- var aLink = document.createElement('a');
- var evt = document.createEvent("HTMLEvents");
- evt.initEvent("click", false, false);
- aLink.download = toFilePath;
- window.URL = window.URL || window.webkitURL;
- aLink.href = window.URL.createObjectURL(file);
- aLink.dispatchEvent(evt);
- }, onError);
- }, onError);
- }, onError);
- }
- if (err) {
- if (cb) {
- cb(err, results);
- }
- } else {
- localStorage.removeItem(filePath);
- copyFileInBrowserRootToUserOS(downFileName, filePath);
- if (cb) {
- cb(err, {msg:'success',path:filePath});
- }
- }
- })
- }
|