diff --git a/.travis.yml b/.travis.yml
index f6be0ee3..96410855 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
language: node_js
node_js:
- - "0.12"
+ - '4'
cache:
directories:
- node_modules
@@ -9,4 +9,4 @@ install:
- npm install
- bower install
script:
- - grunt
\ No newline at end of file
+ - grunt
diff --git a/README.md b/README.md
index 847aca72..cdd2edeb 100644
--- a/README.md
+++ b/README.md
@@ -235,7 +235,7 @@ Qiniu-JavaScript-SDK 的示例 Demo 中的服务器端部分是基于[ Node.js
},
'FileUploaded': function(up, file, info) {
// 每个文件上传成功后,处理相关的事情
- // 其中 info 是文件上传成功后,服务端返回的json,形式如
+ // 其中 info.response 是文件上传成功后,服务端返回的json,形式如
// {
// "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
// "key": "gogopher.jpg"
@@ -243,7 +243,7 @@ Qiniu-JavaScript-SDK 的示例 Demo 中的服务器端部分是基于[ Node.js
// 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
// var domain = up.getOption('domain');
- // var res = parseJSON(info);
+ // var res = parseJSON(info.response);
// var sourceLink = domain + res.key; 获取上传成功后的文件的Url
},
'Error': function(up, err, errTip) {
@@ -467,11 +467,11 @@ Qiniu-JavaScript-SDK 的示例 Demo 中的服务器端部分是基于[ Node.js
```javascript
module.exports = {
- 'ACCESS_KEY': '',
- 'SECRET_KEY': '',
- 'Bucket_Name': '',
+ 'AccessKey': '',
+ 'SecretKey': '',
+ 'Bucket': '',
'Port': 19110,
- 'Uptoken_Url': '', // demo 启动后会在本地 /uptoken 上提供获取 uptoken 的接口,所以这里可以填 'uptoken'
+ 'UptokenUrl': '', // demo 启动后会在本地 /uptoken 上提供获取 uptoken 的接口,所以这里可以填 'uptoken'
'Domain': '' // Bucket 的外链默认域名,在 Bucket 的内容管理里查看,如:'http://xxx.bkt.clouddn.com/'
}
diff --git a/bower.json b/bower.json
index 4cdaa5f7..ed4b3f93 100644
--- a/bower.json
+++ b/bower.json
@@ -1,7 +1,7 @@
{
"name": "qiniu",
"description": "Javascript SDK for Qiniu Resource (Cloud) Storage API",
- "version": "v1.0.20",
+ "version": "v1.0.21",
"main": "dist/qiniu.js",
"moduleType": [
"globals"
@@ -22,20 +22,16 @@
"upload"
],
"authors": "sdk@qiniu.com",
- "contributors": [
- {
- "name": "luoyeshu0507",
- "email": "lizhiwei@qiniu.com"
- },
- {
- "name": "codedogfish",
- "email": "jackyu@qiniu.com"
- },
- {
- "name": "dengchenhua",
- "email": "dengchenhua@qiniu.com"
- }
- ],
+ "contributors": [{
+ "name": "luoyeshu0507",
+ "email": "lizhiwei@qiniu.com"
+ }, {
+ "name": "codedogfish",
+ "email": "jackyu@qiniu.com"
+ }, {
+ "name": "jinxinxin",
+ "email": "jinxinxin@qiniu.com"
+ }],
"homepage": "https://github.com/qiniu/js-sdk",
"repository": {
"type": "git",
diff --git a/demo/config.js.example b/demo/config.js.example
index 64babd73..86112e4f 100644
--- a/demo/config.js.example
+++ b/demo/config.js.example
@@ -1,8 +1,8 @@
module.exports = {
- 'ACCESS_KEY': '', // https://portal.qiniu.com/user/key
- 'SECRET_KEY': '',
- 'Bucket_Name': '',
+ 'AccessKey': '', // https://portal.qiniu.com/user/key
+ 'SecretKey': '',
+ 'Bucket': '',
'Port': 19110,
- 'Uptoken_Url': 'uptoken',
+ 'UptokenUrl': 'uptoken',
'Domain': '' // bucket domain eg:http://qiniu-plupload.qiniudn.com/
};
diff --git a/demo/scripts/main.js b/demo/scripts/main.js
index af814814..a054e547 100644
--- a/demo/scripts/main.js
+++ b/demo/scripts/main.js
@@ -4,249 +4,255 @@
/*global hljs */
$(function() {
- var uploader = Qiniu.uploader({
- disable_statistics_report: false,
- runtimes: 'html5,flash,html4',
- browse_button: 'pickfiles',
- container: 'container',
- drop_element: 'container',
- max_file_size: '1000mb',
- flash_swf_url: 'bower_components/plupload/js/Moxie.swf',
- dragdrop: true,
- chunk_size: '4mb',
- multi_selection: !(moxie.core.utils.Env.OS.toLowerCase()==="ios"),
- uptoken_url: $('#uptoken_url').val(),
- // uptoken_func: function(){
- // var ajax = new XMLHttpRequest();
- // ajax.open('GET', $('#uptoken_url').val(), false);
- // ajax.setRequestHeader("If-Modified-Since", "0");
- // ajax.send();
- // if (ajax.status === 200) {
- // var res = JSON.parse(ajax.responseText);
- // console.log('custom uptoken_func:' + res.uptoken);
- // return res.uptoken;
- // } else {
- // console.log('custom uptoken_func err');
- // return '';
- // }
- // },
- domain: $('#domain').val(),
- get_new_uptoken: false,
- // downtoken_url: '/downtoken',
- // unique_names: true,
- // save_key: true,
- // x_vars: {
- // 'id': '1234',
- // 'time': function(up, file) {
- // var time = (new Date()).getTime();
- // // do something with 'time'
- // return time;
- // },
- // },
- auto_start: true,
- log_level: 5,
- init: {
- 'BeforeChunkUpload':function (up,file) {
- console.log("before chunk upload:",file.name);
- },
- 'FilesAdded': function(up, files) {
- $('table').show();
- $('#success').hide();
- plupload.each(files, function(file) {
- var progress = new FileProgress(file, 'fsUploadProgress');
- progress.setStatus("等待...");
- progress.bindUploadCancel(up);
- });
- },
- 'BeforeUpload': function(up, file) {
- console.log("this is a beforeupload function from init");
- var progress = new FileProgress(file, 'fsUploadProgress');
- var chunk_size = plupload.parseSize(this.getOption('chunk_size'));
- if (up.runtime === 'html5' && chunk_size) {
- progress.setChunkProgess(chunk_size);
- }
- },
- 'UploadProgress': function(up, file) {
- var progress = new FileProgress(file, 'fsUploadProgress');
- var chunk_size = plupload.parseSize(this.getOption('chunk_size'));
- progress.setProgress(file.percent + "%", file.speed, chunk_size);
- },
- 'UploadComplete': function() {
- $('#success').show();
- },
- 'FileUploaded': function(up, file, info) {
- var progress = new FileProgress(file, 'fsUploadProgress');
- progress.setComplete(up, info);
- },
- 'Error': function(up, err, errTip) {
- $('table').show();
- var progress = new FileProgress(err.file, 'fsUploadProgress');
- progress.setError();
- progress.setStatus(errTip);
- }
- // ,
- // 'Key': function(up, file) {
- // var key = "";
- // // do something with key
- // return key
- // }
+ var uploader = Qiniu.uploader({
+ disable_statistics_report: false,
+ runtimes: 'html5,flash,html4',
+ browse_button: 'pickfiles',
+ container: 'container',
+ drop_element: 'container',
+ max_file_size: '1000mb',
+ flash_swf_url: 'bower_components/plupload/js/Moxie.swf',
+ dragdrop: true,
+ chunk_size: '4mb',
+ multi_selection: !(moxie.core.utils.Env.OS.toLowerCase() === "ios"),
+ uptoken_url: $('#uptoken_url').val(),
+ // uptoken_func: function(){
+ // var ajax = new XMLHttpRequest();
+ // ajax.open('GET', $('#uptoken_url').val(), false);
+ // ajax.setRequestHeader("If-Modified-Since", "0");
+ // ajax.send();
+ // if (ajax.status === 200) {
+ // var res = JSON.parse(ajax.responseText);
+ // console.log('custom uptoken_func:' + res.uptoken);
+ // return res.uptoken;
+ // } else {
+ // console.log('custom uptoken_func err');
+ // return '';
+ // }
+ // },
+ domain: $('#domain').val(),
+ get_new_uptoken: false,
+ //downtoken_url: '/downtoken',
+ // unique_names: true,
+ // save_key: true,
+ // x_vars: {
+ // 'id': '1234',
+ // 'time': function(up, file) {
+ // var time = (new Date()).getTime();
+ // // do something with 'time'
+ // return time;
+ // },
+ // },
+ auto_start: true,
+ log_level: 5,
+ init: {
+ 'BeforeChunkUpload': function(up, file) {
+ console.log("before chunk upload:", file.name);
+ },
+ 'FilesAdded': function(up, files) {
+ $('table').show();
+ $('#success').hide();
+ plupload.each(files, function(file) {
+ var progress = new FileProgress(file,
+ 'fsUploadProgress');
+ progress.setStatus("等待...");
+ progress.bindUploadCancel(up);
+ });
+ },
+ 'BeforeUpload': function(up, file) {
+ console.log("this is a beforeupload function from init");
+ var progress = new FileProgress(file, 'fsUploadProgress');
+ var chunk_size = plupload.parseSize(this.getOption(
+ 'chunk_size'));
+ if (up.runtime === 'html5' && chunk_size) {
+ progress.setChunkProgess(chunk_size);
}
- });
- //uploader.init();
- uploader.bind('BeforeUpload', function () {
- console.log("hello man, i am going to upload a file");
- });
- uploader.bind('FileUploaded', function () {
- console.log('hello man,a file is uploaded');
- });
- $('#container').on(
- 'dragenter',
- function(e) {
- e.preventDefault();
- $('#container').addClass('draging');
- e.stopPropagation();
+ },
+ 'UploadProgress': function(up, file) {
+ var progress = new FileProgress(file, 'fsUploadProgress');
+ var chunk_size = plupload.parseSize(this.getOption(
+ 'chunk_size'));
+ progress.setProgress(file.percent + "%", file.speed,
+ chunk_size);
+ },
+ 'UploadComplete': function() {
+ $('#success').show();
+ },
+ 'FileUploaded': function(up, file, info) {
+ var progress = new FileProgress(file, 'fsUploadProgress');
+ console.log("response:", info.response);
+ progress.setComplete(up, info.response);
+ },
+ 'Error': function(up, err, errTip) {
+ $('table').show();
+ var progress = new FileProgress(err.file, 'fsUploadProgress');
+ progress.setError();
+ progress.setStatus(errTip);
}
- ).on('drop', function(e) {
- e.preventDefault();
- $('#container').removeClass('draging');
- e.stopPropagation();
- }).on('dragleave', function(e) {
- e.preventDefault();
- $('#container').removeClass('draging');
- e.stopPropagation();
- }).on('dragover', function(e) {
- e.preventDefault();
- $('#container').addClass('draging');
- e.stopPropagation();
- });
+ // ,
+ // 'Key': function(up, file) {
+ // var key = "";
+ // // do something with key
+ // return key
+ // }
+ }
+ });
+ //uploader.init();
+ uploader.bind('BeforeUpload', function() {
+ console.log("hello man, i am going to upload a file");
+ });
+ uploader.bind('FileUploaded', function() {
+ console.log('hello man,a file is uploaded');
+ });
+ $('#container').on(
+ 'dragenter',
+ function(e) {
+ e.preventDefault();
+ $('#container').addClass('draging');
+ e.stopPropagation();
+ }
+ ).on('drop', function(e) {
+ e.preventDefault();
+ $('#container').removeClass('draging');
+ e.stopPropagation();
+ }).on('dragleave', function(e) {
+ e.preventDefault();
+ $('#container').removeClass('draging');
+ e.stopPropagation();
+ }).on('dragover', function(e) {
+ e.preventDefault();
+ $('#container').addClass('draging');
+ e.stopPropagation();
+ });
- $('#show_code').on('click', function() {
- $('#myModal-code').modal();
- $('pre code').each(function(i, e) {
- hljs.highlightBlock(e);
- });
+ $('#show_code').on('click', function() {
+ $('#myModal-code').modal();
+ $('pre code').each(function(i, e) {
+ hljs.highlightBlock(e);
});
+ });
- $('body').on('click', 'table button.btn', function() {
- $(this).parents('tr').next().toggle();
- });
+ $('body').on('click', 'table button.btn', function() {
+ $(this).parents('tr').next().toggle();
+ });
- var getRotate = function(url) {
- if (!url) {
- return 0;
- }
- var arr = url.split('/');
- for (var i = 0, len = arr.length; i < len; i++) {
- if (arr[i] === 'rotate') {
- return parseInt(arr[i + 1], 10);
- }
+ var getRotate = function(url) {
+ if (!url) {
+ return 0;
+ }
+ var arr = url.split('/');
+ for (var i = 0, len = arr.length; i < len; i++) {
+ if (arr[i] === 'rotate') {
+ return parseInt(arr[i + 1], 10);
+ }
+ }
+ return 0;
+ };
+
+ $('#myModal-img .modal-body-footer').find('a').on('click', function() {
+ var img = $('#myModal-img').find('.modal-body img');
+ var key = img.data('key');
+ var oldUrl = img.attr('src');
+ var originHeight = parseInt(img.data('h'), 10);
+ var fopArr = [];
+ var rotate = getRotate(oldUrl);
+ if (!$(this).hasClass('no-disable-click')) {
+ $(this).addClass('disabled').siblings().removeClass('disabled');
+ if ($(this).data('imagemogr') !== 'no-rotate') {
+ fopArr.push({
+ 'fop': 'imageMogr2',
+ 'auto-orient': true,
+ 'strip': true,
+ 'rotate': rotate,
+ 'format': 'png'
+ });
+ }
+ } else {
+ $(this).siblings().removeClass('disabled');
+ var imageMogr = $(this).data('imagemogr');
+ if (imageMogr === 'left') {
+ rotate = rotate - 90 < 0 ? rotate + 270 : rotate - 90;
+ } else if (imageMogr === 'right') {
+ rotate = rotate + 90 > 360 ? rotate - 270 : rotate + 90;
+ }
+ fopArr.push({
+ 'fop': 'imageMogr2',
+ 'auto-orient': true,
+ 'strip': true,
+ 'rotate': rotate,
+ 'format': 'png'
+ });
+ }
+
+ $('#myModal-img .modal-body-footer').find('a.disabled').each(
+ function() {
+
+ var watermark = $(this).data('watermark');
+ var imageView = $(this).data('imageview');
+ var imageMogr = $(this).data('imagemogr');
+
+ if (watermark) {
+ fopArr.push({
+ fop: 'watermark',
+ mode: 1,
+ image: 'http://www.b1.qiniudn.com/images/logo-2.png',
+ dissolve: 100,
+ gravity: watermark,
+ dx: 100,
+ dy: 100
+ });
}
- return 0;
- };
- $('#myModal-img .modal-body-footer').find('a').on('click', function() {
- var img = $('#myModal-img').find('.modal-body img');
- var key = img.data('key');
- var oldUrl = img.attr('src');
- var originHeight = parseInt(img.data('h'), 10);
- var fopArr = [];
- var rotate = getRotate(oldUrl);
- if (!$(this).hasClass('no-disable-click')) {
- $(this).addClass('disabled').siblings().removeClass('disabled');
- if ($(this).data('imagemogr') !== 'no-rotate') {
- fopArr.push({
- 'fop': 'imageMogr2',
- 'auto-orient': true,
- 'strip': true,
- 'rotate': rotate,
- 'format': 'png'
- });
- }
- } else {
- $(this).siblings().removeClass('disabled');
- var imageMogr = $(this).data('imagemogr');
- if (imageMogr === 'left') {
- rotate = rotate - 90 < 0 ? rotate + 270 : rotate - 90;
- } else if (imageMogr === 'right') {
- rotate = rotate + 90 > 360 ? rotate - 270 : rotate + 90;
- }
- fopArr.push({
- 'fop': 'imageMogr2',
- 'auto-orient': true,
- 'strip': true,
- 'rotate': rotate,
- 'format': 'png'
- });
+ if (imageView) {
+ var height;
+ switch (imageView) {
+ case 'large':
+ height = originHeight;
+ break;
+ case 'middle':
+ height = originHeight * 0.5;
+ break;
+ case 'small':
+ height = originHeight * 0.1;
+ break;
+ default:
+ height = originHeight;
+ break;
+ }
+ fopArr.push({
+ fop: 'imageView2',
+ mode: 3,
+ h: parseInt(height, 10),
+ q: 100,
+ format: 'png'
+ });
}
- $('#myModal-img .modal-body-footer').find('a.disabled').each(function() {
-
- var watermark = $(this).data('watermark');
- var imageView = $(this).data('imageview');
- var imageMogr = $(this).data('imagemogr');
-
- if (watermark) {
- fopArr.push({
- fop: 'watermark',
- mode: 1,
- image: 'http://www.b1.qiniudn.com/images/logo-2.png',
- dissolve: 100,
- gravity: watermark,
- dx: 100,
- dy: 100
- });
- }
-
- if (imageView) {
- var height;
- switch (imageView) {
- case 'large':
- height = originHeight;
- break;
- case 'middle':
- height = originHeight * 0.5;
- break;
- case 'small':
- height = originHeight * 0.1;
- break;
- default:
- height = originHeight;
- break;
- }
- fopArr.push({
- fop: 'imageView2',
- mode: 3,
- h: parseInt(height, 10),
- q: 100,
- format: 'png'
- });
- }
-
- if (imageMogr === 'no-rotate') {
- fopArr.push({
- 'fop': 'imageMogr2',
- 'auto-orient': true,
- 'strip': true,
- 'rotate': 0,
- 'format': 'png'
- });
- }
- });
+ if (imageMogr === 'no-rotate') {
+ fopArr.push({
+ 'fop': 'imageMogr2',
+ 'auto-orient': true,
+ 'strip': true,
+ 'rotate': 0,
+ 'format': 'png'
+ });
+ }
+ });
- var newUrl = Qiniu.pipeline(fopArr, key);
+ var newUrl = Qiniu.pipeline(fopArr, key);
- var newImg = new Image();
- img.attr('src', 'images/loading.gif');
- newImg.onload = function() {
- img.attr('src', newUrl);
- img.parent('a').attr('href', newUrl);
- };
- newImg.src = newUrl;
- return false;
- });
+ var newImg = new Image();
+ img.attr('src', 'images/loading.gif');
+ newImg.onload = function() {
+ img.attr('src', newUrl);
+ img.parent('a').attr('href', newUrl);
+ };
+ newImg.src = newUrl;
+ return false;
+ });
});
diff --git a/demo/scripts/ui.js b/demo/scripts/ui.js
index ad07f39c..127cbee3 100644
--- a/demo/scripts/ui.js
+++ b/demo/scripts/ui.js
@@ -1,414 +1,437 @@
-/*global plupload */
-/*global qiniu */
-function FileProgress(file, targetID) {
- this.fileProgressID = file.id;
- this.file = file;
-
- this.opacity = 100;
- this.height = 0;
- this.fileProgressWrapper = $('#' + this.fileProgressID);
- if (!this.fileProgressWrapper.length) {
- //
- //
- // 20% Complete
- //
- //
-
- this.fileProgressWrapper = $('
');
- var Wrappeer = this.fileProgressWrapper;
- Wrappeer.attr('id', this.fileProgressID).addClass('progressContainer');
-
- var progressText = $(" | ");
- progressText.addClass('progressName').text(file.name);
-
-
- var fileSize = plupload.formatSize(file.size).toUpperCase();
- var progressSize = $(" | ");
- progressSize.addClass("progressFileSize").text(fileSize);
-
- var progressBarTd = $(" | ");
- var progressBarBox = $("");
- progressBarBox.addClass('info');
- var progressBarWrapper = $("");
- progressBarWrapper.addClass("progress progress-striped");
-
- var progressBar = $("");
- progressBar.addClass("progress-bar progress-bar-info")
- .attr('role', 'progressbar')
- .attr('aria-valuemax', 100)
- .attr('aria-valuenow', 0)
- .attr('aria-valuein', 0)
- .width('0%');
-
- var progressBarPercent = $('');
- progressBarPercent.text(fileSize);
-
- var progressCancel = $('');
- progressCancel.show().addClass('progressCancel').text('×');
-
- progressBar.append(progressBarPercent);
- progressBarWrapper.append(progressBar);
- progressBarBox.append(progressBarWrapper);
- progressBarBox.append(progressCancel);
-
- var progressBarStatus = $('');
- progressBarBox.append(progressBarStatus);
- progressBarTd.append(progressBarBox);
-
- Wrappeer.append(progressText);
- Wrappeer.append(progressSize);
- Wrappeer.append(progressBarTd);
-
- $('#' + targetID).append(Wrappeer);
- } else {
- this.reset();
- }
-
- this.height = this.fileProgressWrapper.offset().top;
- this.setTimer(null);
-}
-
-FileProgress.prototype.setTimer = function(timer) {
- this.fileProgressWrapper.FP_TIMER = timer;
-};
-
-FileProgress.prototype.getTimer = function(timer) {
- return this.fileProgressWrapper.FP_TIMER || null;
-};
-
-FileProgress.prototype.reset = function() {
- this.fileProgressWrapper.attr('class', "progressContainer");
- this.fileProgressWrapper.find('td .progress .progress-bar-info').attr('aria-valuenow', 0).width('0%').find('span').text('');
- this.appear();
-};
-
-FileProgress.prototype.setChunkProgess = function(chunk_size) {
- var chunk_amount = Math.ceil(this.file.size / chunk_size);
- if (chunk_amount === 1) {
- return false;
- }
-
- var viewProgess = $('');
-
- var progressBarChunkTr = $(' |
');
- var progressBarChunk = $('');
- for (var i = 1; i <= chunk_amount; i++) {
- var col = $('');
- var progressBarWrapper = $('");
- progressBar.addClass("progress-bar progress-bar-info text-left")
- .attr('role', 'progressbar')
- .attr('aria-valuemax', 100)
- .attr('aria-valuenow', 0)
- .attr('aria-valuein', 0)
- .width('0%')
- .attr('id', this.file.id + '_' + i)
- .text('');
-
- var progressBarStatus = $('');
- progressBarStatus.addClass('chunk-status').text();
-
- progressBarWrapper.append(progressBar);
- progressBarWrapper.append(progressBarStatus);
-
- col.append(progressBarWrapper);
- progressBarChunk.append(col);
- }
-
- if(!this.fileProgressWrapper.find('td:eq(2) .btn-default').length){
- this.fileProgressWrapper.find('td>div').append(viewProgess);
- }
- progressBarChunkTr.hide().find('td').append(progressBarChunk);
- progressBarChunkTr.insertAfter(this.fileProgressWrapper);
-
-};
-
-FileProgress.prototype.setProgress = function(percentage, speed, chunk_size) {
- this.fileProgressWrapper.attr('class', "progressContainer green");
-
- var file = this.file;
- var uploaded = file.loaded;
-
- var size = plupload.formatSize(uploaded).toUpperCase();
- var formatSpeed = plupload.formatSize(speed).toUpperCase();
- var progressbar = this.fileProgressWrapper.find('td .progress').find('.progress-bar-info');
- if (this.fileProgressWrapper.find('.status').text() === '取消上传'){
- return;
- }
- this.fileProgressWrapper.find('.status').text("已上传: " + size + " 上传速度: " + formatSpeed + "/s");
- percentage = parseInt(percentage, 10);
- if (file.status !== plupload.DONE && percentage === 100) {
- percentage = 99;
- }
-
- progressbar.attr('aria-valuenow', percentage).css('width', percentage + '%');
-
- if (chunk_size) {
- var chunk_amount = Math.ceil(file.size / chunk_size);
- if (chunk_amount === 1) {
- return false;
- }
- var current_uploading_chunk = Math.ceil(uploaded / chunk_size);
- var pre_chunk, text;
-
- for (var index = 0; index < current_uploading_chunk; index++) {
- pre_chunk = $('#' + file.id + "_" + index);
- pre_chunk.width('100%').removeClass().addClass('alert-success').attr('aria-valuenow', 100);
- text = "块" + index + "上传进度100%";
- pre_chunk.next().html(text);
- }
-
- var currentProgessBar = $('#' + file.id + "_" + current_uploading_chunk);
- var current_chunk_percent;
- if (current_uploading_chunk < chunk_amount) {
- if (uploaded % chunk_size) {
- current_chunk_percent = ((uploaded % chunk_size) / chunk_size * 100).toFixed(2);
- } else {
- current_chunk_percent = 100;
- currentProgessBar.removeClass().addClass('alert-success');
- }
- } else {
- var last_chunk_size = file.size - chunk_size * (chunk_amount - 1);
- var left_file_size = file.size - uploaded;
- if (left_file_size % last_chunk_size) {
- current_chunk_percent = ((uploaded % chunk_size) / last_chunk_size * 100).toFixed(2);
- } else {
- current_chunk_percent = 100;
- currentProgessBar.removeClass().addClass('alert-success');
- }
- }
- currentProgessBar.width(current_chunk_percent + '%');
- currentProgessBar.attr('aria-valuenow', current_chunk_percent);
- text = "块" + current_uploading_chunk + "上传进度" + current_chunk_percent + '%';
- currentProgessBar.next().html(text);
- }
-
- this.appear();
-};
-
-FileProgress.prototype.setComplete = function(up, info) {
- var td = this.fileProgressWrapper.find('td:eq(2)'),
- tdProgress = td.find('.progress');
-
- var res = $.parseJSON(info.response);
- var url;
- if (res.url) {
- url = res.url;
- str = "" +
- "Hash:" + res.hash + "
";
- } else {
- var domain = up.getOption('domain');
- url = domain + encodeURI(res.key);
- var link = domain + res.key;
- str = "" +
- "Hash:" + res.hash + "
";
- }
-
- tdProgress.html(str).removeClass().next().next('.status').hide();
- td.find('.progressCancel').hide();
-
- var progressNameTd = this.fileProgressWrapper.find('.progressName');
- var imageView = '?imageView2/1/w/100/h/100';
-
- var isImage = function(url) {
- var res, suffix = "";
- var imageSuffixes = ["png", "jpg", "jpeg", "gif", "bmp"];
- var suffixMatch = /\.([a-zA-Z0-9]+)(\?|\@|$)/;
-
- if (!url || !suffixMatch.test(url)) {
- return false;
- }
- res = suffixMatch.exec(url);
- suffix = res[1].toLowerCase();
- for (var i = 0, l = imageSuffixes.length; i < l; i++) {
- if (suffix === imageSuffixes[i]) {
- return true;
- }
- }
- return false;
- };
-
- var isImg = isImage(url);
-
- var Wrapper = $('');
- var imgWrapper = $('');
- var linkWrapper = $('');
- var showImg = $('
');
-
- progressNameTd.append(Wrapper);
-
- if (!isImg) {
- showImg.attr('src', 'images/default.png');
- Wrapper.addClass('default');
-
- imgWrapper.append(showImg);
- Wrapper.append(imgWrapper);
- } else {
- linkWrapper.append(showImg);
- imgWrapper.append(linkWrapper);
- Wrapper.append(imgWrapper);
-
- var img = new Image();
- if (!/imageView/.test(url)) {
- url += imageView
- }
- $(img).attr('src', url);
-
- var height_space = 340;
- $(img).on('load', function() {
- showImg.attr('src', url);
-
- linkWrapper.attr('href', url).attr('title', '查看原图');
-
- function initImg(url, key, height) {
- $('#myModal-img').modal();
- var modalBody = $('#myModal-img').find('.modal-body');
- if (height <= 300) {
- $('#myModal-img').find('.text-warning').show();
- }
- var newImg = new Image();
- modalBody.find('img').attr('src', 'images/loading.gif');
- newImg.onload = function() {
- modalBody.find('img').attr('src', url).data('key', key).data('h', height);
- modalBody.find('.modal-body-wrapper').find('a').attr('href', url);
- };
- newImg.src = url;
- }
-
- var infoWrapper = $('');
-
-
- var fopLink = $('');
- fopLink.attr('data-key', res.key).text('查看处理效果');
- infoWrapper.append(fopLink);
- fopLink.on('click', function() {
- var key = $(this).data('key');
- var height = parseInt($(this).parents('.Wrapper').find('.origin-height').text(), 10);
- if (height > $(window).height() - height_space) {
- height = parseInt($(window).height() - height_space, 10);
- } else {
- height = parseInt(height, 10) || 300;
- //set a default height 300 for ie9-
- }
- var fopArr = [];
- fopArr.push({
- fop: 'imageView2',
- mode: 3,
- h: height,
- q: 100,
- format: 'png'
- });
- fopArr.push({
- fop: 'watermark',
- mode: 1,
- image: 'http://www.b1.qiniudn.com/images/logo-2.png',
- dissolve: 100,
- gravity: 'SouthEast',
- dx: 100,
- dy: 100
- });
- var url = Qiniu.pipeline(fopArr, key);
- $('#myModal-img').on('hide.bs.modal', function() {
- $('#myModal-img').find('.btn-default').removeClass('disabled');
- $('#myModal-img').find('.text-warning').hide();
- }).on('show.bs.modal', function() {
- $('#myModal-img').find('.imageView').find('a:eq(0)').addClass('disabled');
- $('#myModal-img').find('.watermark').find('a:eq(3)').addClass('disabled');
- $('#myModal-img').find('.text-warning').hide();
- });
-
- initImg(url, key, height);
-
- return false;
- });
-
- var ie = Qiniu.detectIEVersion();
- if (!(ie && ie <= 9)) {
- var exif = Qiniu.exif(res.key);
- if (exif) {
- var exifLink = $('查看exif');
- exifLink.attr('href', url + '?exif');
- infoWrapper.append(exifLink);
- }
-
- var imageInfo = Qiniu.imageInfo(res.key);
- var infoArea = $('');
- var infoInner = '格式:' + imageInfo.format + '
' +
- '宽度:' + imageInfo.width + 'px
' +
- '高度:' + imageInfo.height + 'px
';
- infoArea.html(infoInner);
-
- infoWrapper.append(infoArea);
- }
-
- Wrapper.append(infoWrapper);
-
- }).on('error', function() {
- showImg.attr('src', 'default.png');
- Wrapper.addClass('default');
- });
- }
-};
-FileProgress.prototype.setError = function() {
- this.fileProgressWrapper.find('td:eq(2)').attr('class', 'text-warning');
- this.fileProgressWrapper.find('td:eq(2) .progress').css('width', 0).hide();
- this.fileProgressWrapper.find('button').hide();
- this.fileProgressWrapper.next('.chunk-status-tr').hide();
-};
-
-FileProgress.prototype.setCancelled = function(manual) {
- var progressContainer = 'progressContainer';
- if (!manual) {
- progressContainer += ' red';
- }
- this.fileProgressWrapper.attr('class', progressContainer);
- this.fileProgressWrapper.find('td .progress').remove();
- this.fileProgressWrapper.find('td:eq(2) .btn-default').hide();
- this.fileProgressWrapper.find('td:eq(2) .progressCancel').hide();
-};
-
-FileProgress.prototype.setStatus = function(status, isUploading) {
- if (!isUploading) {
- this.fileProgressWrapper.find('.status').text(status).attr('class', 'status text-left');
- }
-};
-
-// 绑定取消上传事件
-FileProgress.prototype.bindUploadCancel = function(up) {
- var self = this;
- if (up) {
- self.fileProgressWrapper.find('td:eq(2) .progressCancel').on('click', function(){
- self.setCancelled(false);
- self.setStatus("取消上传");
- self.fileProgressWrapper.find('.status').css('left', '0');
- up.removeFile(self.file);
- });
- }
-
-};
-
-FileProgress.prototype.appear = function() {
- if (this.getTimer() !== null) {
- clearTimeout(this.getTimer());
- this.setTimer(null);
- }
-
- if (this.fileProgressWrapper[0].filters) {
- try {
- this.fileProgressWrapper[0].filters.item("DXImageTransform.Microsoft.Alpha").opacity = 100;
- } catch (e) {
- // If it is not set initially, the browser will throw an error. This will set it if it is not set yet.
- this.fileProgressWrapper.css('filter', "progid:DXImageTransform.Microsoft.Alpha(opacity=100)");
- }
- } else {
- this.fileProgressWrapper.css('opacity', 1);
- }
-
- this.fileProgressWrapper.css('height', '');
-
- this.height = this.fileProgressWrapper.offset().top;
- this.opacity = 100;
- this.fileProgressWrapper.show();
-
-};
+/*global plupload */
+/*global qiniu */
+function FileProgress(file, targetID) {
+ this.fileProgressID = file.id;
+ this.file = file;
+
+ this.opacity = 100;
+ this.height = 0;
+ this.fileProgressWrapper = $('#' + this.fileProgressID);
+ if (!this.fileProgressWrapper.length) {
+ //
+ //
+ // 20% Complete
+ //
+ //
+
+ this.fileProgressWrapper = $('
');
+ var Wrappeer = this.fileProgressWrapper;
+ Wrappeer.attr('id', this.fileProgressID).addClass('progressContainer');
+
+ var progressText = $(" | ");
+ progressText.addClass('progressName').text(file.name);
+
+
+ var fileSize = plupload.formatSize(file.size).toUpperCase();
+ var progressSize = $(" | ");
+ progressSize.addClass("progressFileSize").text(fileSize);
+
+ var progressBarTd = $(" | ");
+ var progressBarBox = $("");
+ progressBarBox.addClass('info');
+ var progressBarWrapper = $("");
+ progressBarWrapper.addClass("progress progress-striped");
+
+ var progressBar = $("");
+ progressBar.addClass("progress-bar progress-bar-info")
+ .attr('role', 'progressbar')
+ .attr('aria-valuemax', 100)
+ .attr('aria-valuenow', 0)
+ .attr('aria-valuein', 0)
+ .width('0%');
+
+ var progressBarPercent = $('');
+ progressBarPercent.text(fileSize);
+
+ var progressCancel = $('');
+ progressCancel.show().addClass('progressCancel').text('×');
+
+ progressBar.append(progressBarPercent);
+ progressBarWrapper.append(progressBar);
+ progressBarBox.append(progressBarWrapper);
+ progressBarBox.append(progressCancel);
+
+ var progressBarStatus = $('');
+ progressBarBox.append(progressBarStatus);
+ progressBarTd.append(progressBarBox);
+
+ Wrappeer.append(progressText);
+ Wrappeer.append(progressSize);
+ Wrappeer.append(progressBarTd);
+
+ $('#' + targetID).append(Wrappeer);
+ } else {
+ this.reset();
+ }
+
+ this.height = this.fileProgressWrapper.offset().top;
+ this.setTimer(null);
+}
+
+FileProgress.prototype.setTimer = function(timer) {
+ this.fileProgressWrapper.FP_TIMER = timer;
+};
+
+FileProgress.prototype.getTimer = function(timer) {
+ return this.fileProgressWrapper.FP_TIMER || null;
+};
+
+FileProgress.prototype.reset = function() {
+ this.fileProgressWrapper.attr('class', "progressContainer");
+ this.fileProgressWrapper.find('td .progress .progress-bar-info').attr(
+ 'aria-valuenow', 0).width('0%').find('span').text('');
+ this.appear();
+};
+
+FileProgress.prototype.setChunkProgess = function(chunk_size) {
+ var chunk_amount = Math.ceil(this.file.size / chunk_size);
+ if (chunk_amount === 1) {
+ return false;
+ }
+
+ var viewProgess = $('');
+
+ var progressBarChunkTr = $(
+ ' |
');
+ var progressBarChunk = $('');
+ for (var i = 1; i <= chunk_amount; i++) {
+ var col = $('');
+ var progressBarWrapper = $('");
+ progressBar.addClass("progress-bar progress-bar-info text-left")
+ .attr('role', 'progressbar')
+ .attr('aria-valuemax', 100)
+ .attr('aria-valuenow', 0)
+ .attr('aria-valuein', 0)
+ .width('0%')
+ .attr('id', this.file.id + '_' + i)
+ .text('');
+
+ var progressBarStatus = $('');
+ progressBarStatus.addClass('chunk-status').text();
+
+ progressBarWrapper.append(progressBar);
+ progressBarWrapper.append(progressBarStatus);
+
+ col.append(progressBarWrapper);
+ progressBarChunk.append(col);
+ }
+
+ if (!this.fileProgressWrapper.find('td:eq(2) .btn-default').length) {
+ this.fileProgressWrapper.find('td>div').append(viewProgess);
+ }
+ progressBarChunkTr.hide().find('td').append(progressBarChunk);
+ progressBarChunkTr.insertAfter(this.fileProgressWrapper);
+
+};
+
+FileProgress.prototype.setProgress = function(percentage, speed, chunk_size) {
+ this.fileProgressWrapper.attr('class', "progressContainer green");
+
+ var file = this.file;
+ var uploaded = file.loaded;
+
+ var size = plupload.formatSize(uploaded).toUpperCase();
+ var formatSpeed = plupload.formatSize(speed).toUpperCase();
+ var progressbar = this.fileProgressWrapper.find('td .progress').find(
+ '.progress-bar-info');
+ if (this.fileProgressWrapper.find('.status').text() === '取消上传') {
+ return;
+ }
+ this.fileProgressWrapper.find('.status').text("已上传: " + size + " 上传速度: " +
+ formatSpeed + "/s");
+ percentage = parseInt(percentage, 10);
+ if (file.status !== plupload.DONE && percentage === 100) {
+ percentage = 99;
+ }
+
+ progressbar.attr('aria-valuenow', percentage).css('width', percentage + '%');
+
+ if (chunk_size) {
+ var chunk_amount = Math.ceil(file.size / chunk_size);
+ if (chunk_amount === 1) {
+ return false;
+ }
+ var current_uploading_chunk = Math.ceil(uploaded / chunk_size);
+ var pre_chunk, text;
+
+ for (var index = 0; index < current_uploading_chunk; index++) {
+ pre_chunk = $('#' + file.id + "_" + index);
+ pre_chunk.width('100%').removeClass().addClass('alert-success').attr(
+ 'aria-valuenow', 100);
+ text = "块" + index + "上传进度100%";
+ pre_chunk.next().html(text);
+ }
+
+ var currentProgessBar = $('#' + file.id + "_" + current_uploading_chunk);
+ var current_chunk_percent;
+ if (current_uploading_chunk < chunk_amount) {
+ if (uploaded % chunk_size) {
+ current_chunk_percent = ((uploaded % chunk_size) / chunk_size * 100).toFixed(
+ 2);
+ } else {
+ current_chunk_percent = 100;
+ currentProgessBar.removeClass().addClass('alert-success');
+ }
+ } else {
+ var last_chunk_size = file.size - chunk_size * (chunk_amount - 1);
+ var left_file_size = file.size - uploaded;
+ if (left_file_size % last_chunk_size) {
+ current_chunk_percent = ((uploaded % chunk_size) / last_chunk_size *
+ 100).toFixed(2);
+ } else {
+ current_chunk_percent = 100;
+ currentProgessBar.removeClass().addClass('alert-success');
+ }
+ }
+ currentProgessBar.width(current_chunk_percent + '%');
+ currentProgessBar.attr('aria-valuenow', current_chunk_percent);
+ text = "块" + current_uploading_chunk + "上传进度" + current_chunk_percent +
+ '%';
+ currentProgessBar.next().html(text);
+ }
+
+ this.appear();
+};
+
+FileProgress.prototype.setComplete = function(up, info) {
+ var td = this.fileProgressWrapper.find('td:eq(2)'),
+ tdProgress = td.find('.progress');
+
+ var res = $.parseJSON(info);
+ var url;
+ if (res.url) {
+ url = res.url;
+ str = "" +
+ "Hash:" + res.hash + "
";
+ } else {
+ var domain = up.getOption('domain');
+ url = domain + encodeURI(res.key);
+ var link = domain + res.key;
+ str = "" +
+ "Hash:" + res.hash + "
";
+ }
+
+ tdProgress.html(str).removeClass().next().next('.status').hide();
+ td.find('.progressCancel').hide();
+
+ var progressNameTd = this.fileProgressWrapper.find('.progressName');
+ var imageView = '?imageView2/1/w/100/h/100';
+
+ var isImage = function(url) {
+ var res, suffix = "";
+ var imageSuffixes = ["png", "jpg", "jpeg", "gif", "bmp"];
+ var suffixMatch = /\.([a-zA-Z0-9]+)(\?|\@|$)/;
+
+ if (!url || !suffixMatch.test(url)) {
+ return false;
+ }
+ res = suffixMatch.exec(url);
+ suffix = res[1].toLowerCase();
+ for (var i = 0, l = imageSuffixes.length; i < l; i++) {
+ if (suffix === imageSuffixes[i]) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+ var isImg = isImage(url);
+
+ var Wrapper = $('');
+ var imgWrapper = $('');
+ var linkWrapper = $('');
+ var showImg = $('
');
+
+ progressNameTd.append(Wrapper);
+
+ if (!isImg) {
+ showImg.attr('src', 'images/default.png');
+ Wrapper.addClass('default');
+
+ imgWrapper.append(showImg);
+ Wrapper.append(imgWrapper);
+ } else {
+ linkWrapper.append(showImg);
+ imgWrapper.append(linkWrapper);
+ Wrapper.append(imgWrapper);
+
+ var img = new Image();
+ if (!/imageView/.test(url)) {
+ url += imageView
+ }
+ $(img).attr('src', url);
+
+ var height_space = 340;
+ $(img).on('load', function() {
+ showImg.attr('src', url);
+
+ linkWrapper.attr('href', url).attr('title', '查看原图');
+
+ function initImg(url, key, height) {
+ $('#myModal-img').modal();
+ var modalBody = $('#myModal-img').find('.modal-body');
+ if (height <= 300) {
+ $('#myModal-img').find('.text-warning').show();
+ }
+ var newImg = new Image();
+ modalBody.find('img').attr('src', 'images/loading.gif');
+ newImg.onload = function() {
+ modalBody.find('img').attr('src', url).data('key', key).data(
+ 'h', height);
+ modalBody.find('.modal-body-wrapper').find('a').attr('href',
+ url);
+ };
+ newImg.src = url;
+ }
+
+ var infoWrapper = $('');
+
+
+ var fopLink = $('');
+ fopLink.attr('data-key', res.key).text('查看处理效果');
+ infoWrapper.append(fopLink);
+ fopLink.on('click', function() {
+ var key = $(this).data('key');
+ var height = parseInt($(this).parents('.Wrapper').find(
+ '.origin-height').text(), 10);
+ if (height > $(window).height() - height_space) {
+ height = parseInt($(window).height() - height_space, 10);
+ } else {
+ height = parseInt(height, 10) || 300;
+ //set a default height 300 for ie9-
+ }
+ var fopArr = [];
+ fopArr.push({
+ fop: 'imageView2',
+ mode: 3,
+ h: height,
+ q: 100,
+ format: 'png'
+ });
+ fopArr.push({
+ fop: 'watermark',
+ mode: 1,
+ image: 'http://www.b1.qiniudn.com/images/logo-2.png',
+ dissolve: 100,
+ gravity: 'SouthEast',
+ dx: 100,
+ dy: 100
+ });
+ var url = Qiniu.pipeline(fopArr, key);
+ $('#myModal-img').on('hide.bs.modal', function() {
+ $('#myModal-img').find('.btn-default').removeClass(
+ 'disabled');
+ $('#myModal-img').find('.text-warning').hide();
+ }).on('show.bs.modal', function() {
+ $('#myModal-img').find('.imageView').find('a:eq(0)').addClass(
+ 'disabled');
+ $('#myModal-img').find('.watermark').find('a:eq(3)').addClass(
+ 'disabled');
+ $('#myModal-img').find('.text-warning').hide();
+ });
+
+ initImg(url, key, height);
+
+ return false;
+ });
+
+ var ie = Qiniu.detectIEVersion();
+ if (!(ie && ie <= 9)) {
+ var exif = Qiniu.exif(res.key);
+ if (exif) {
+ var exifLink = $('查看exif');
+ exifLink.attr('href', url + '?exif');
+ infoWrapper.append(exifLink);
+ }
+
+ var imageInfo = Qiniu.imageInfo(res.key);
+ var infoArea = $('');
+ var infoInner = '格式:' +
+ imageInfo.format + '
' +
+ '宽度:' + imageInfo.width +
+ 'px
' +
+ '高度:' + imageInfo.height +
+ 'px
';
+ infoArea.html(infoInner);
+
+ infoWrapper.append(infoArea);
+ }
+
+ Wrapper.append(infoWrapper);
+
+ }).on('error', function() {
+ showImg.attr('src', 'default.png');
+ Wrapper.addClass('default');
+ });
+ }
+};
+FileProgress.prototype.setError = function() {
+ this.fileProgressWrapper.find('td:eq(2)').attr('class', 'text-warning');
+ this.fileProgressWrapper.find('td:eq(2) .progress').css('width', 0).hide();
+ this.fileProgressWrapper.find('button').hide();
+ this.fileProgressWrapper.next('.chunk-status-tr').hide();
+};
+
+FileProgress.prototype.setCancelled = function(manual) {
+ var progressContainer = 'progressContainer';
+ if (!manual) {
+ progressContainer += ' red';
+ }
+ this.fileProgressWrapper.attr('class', progressContainer);
+ this.fileProgressWrapper.find('td .progress').remove();
+ this.fileProgressWrapper.find('td:eq(2) .btn-default').hide();
+ this.fileProgressWrapper.find('td:eq(2) .progressCancel').hide();
+};
+
+FileProgress.prototype.setStatus = function(status, isUploading) {
+ if (!isUploading) {
+ this.fileProgressWrapper.find('.status').text(status).attr('class',
+ 'status text-left');
+ }
+};
+
+// 绑定取消上传事件
+FileProgress.prototype.bindUploadCancel = function(up) {
+ var self = this;
+ if (up) {
+ self.fileProgressWrapper.find('td:eq(2) .progressCancel').on('click',
+ function() {
+ self.setCancelled(false);
+ self.setStatus("取消上传");
+ self.fileProgressWrapper.find('.status').css('left', '0');
+ up.removeFile(self.file);
+ });
+ }
+
+};
+
+FileProgress.prototype.appear = function() {
+ if (this.getTimer() !== null) {
+ clearTimeout(this.getTimer());
+ this.setTimer(null);
+ }
+
+ if (this.fileProgressWrapper[0].filters) {
+ try {
+ this.fileProgressWrapper[0].filters.item(
+ "DXImageTransform.Microsoft.Alpha").opacity = 100;
+ } catch (e) {
+ // If it is not set initially, the browser will throw an error. This will set it if it is not set yet.
+ this.fileProgressWrapper.css('filter',
+ "progid:DXImageTransform.Microsoft.Alpha(opacity=100)");
+ }
+ } else {
+ this.fileProgressWrapper.css('opacity', 1);
+ }
+
+ this.fileProgressWrapper.css('height', '');
+
+ this.height = this.fileProgressWrapper.offset().top;
+ this.opacity = 100;
+ this.fileProgressWrapper.show();
+
+};
diff --git a/demo/server.js b/demo/server.js
index 30e37336..b5e9a26b 100644
--- a/demo/server.js
+++ b/demo/server.js
@@ -4,7 +4,7 @@ var config = require('./config.js');
var app = express();
app.configure(function() {
- app.use(express.static(__dirname + '/'));
+ app.use(express.static(__dirname + '/'));
});
app.set('views', __dirname + '/views');
@@ -14,92 +14,92 @@ app.use(express.urlencoded());
app.use('/bower_components', express.static(__dirname + '/../bower_components'));
app.use('/src', express.static(__dirname + '/../src'));
+var mac = new qiniu.auth.digest.Mac(config.AccessKey, config.SecretKey);
+var options = {
+ scope: config.Bucket,
+ deleteAfterDays: 7,
+};
+var putPolicy = new qiniu.rs.PutPolicy(options);
+var bucketManager = new qiniu.rs.BucketManager(mac, null);
+
app.get('/uptoken', function(req, res, next) {
- var token = uptoken.token();
- res.header("Cache-Control", "max-age=0, private, must-revalidate");
- res.header("Pragma", "no-cache");
- res.header("Expires", 0);
- if (token) {
- res.json({
- uptoken: token
- });
- }
+ var token = putPolicy.uploadToken(mac);
+ res.header("Cache-Control", "max-age=0, private, must-revalidate");
+ res.header("Pragma", "no-cache");
+ res.header("Expires", 0);
+ if (token) {
+ res.json({
+ uptoken: token
+ });
+ }
});
app.post('/downtoken', function(req, res) {
- var key = req.body.key,
- domain = req.body.domain;
-
- //trim 'http://'
- if (domain.indexOf('http://') != -1) {
- domain = domain.substr(7);
- }
- //trim 'https://'
- if (domain.indexOf('https://') != -1) {
- domain = domain.substr(8);
- }
- //trim '/' if the domain's last char is '/'
- if (domain.lastIndexOf('/') === domain.length - 1) {
- domain = domain.substr(0, domain.length - 1);
- }
-
- var baseUrl = qiniu.rs.makeBaseUrl(domain, key);
- var deadline = 3600 + Math.floor(Date.now() / 1000);
-
- baseUrl += '?e=' + deadline;
- var signature = qiniu.util.hmacSha1(baseUrl, config.SECRET_KEY);
- var encodedSign = qiniu.util.base64ToUrlSafe(signature);
- var downloadToken = config.ACCESS_KEY + ':' + encodedSign;
-
- if (downloadToken) {
- res.json({
- downtoken: downloadToken,
- url: baseUrl + '&token=' + downloadToken
- })
- }
+ var key = req.body.key;
+ var domain = req.body.domain;
+
+ //trim '/' if the domain's last char is '/'
+ if (domain.lastIndexOf('/') === domain.length - 1) {
+ domain = domain.substr(0, domain.length - 1);
+ }
+
+ var deadline = 3600 + Math.floor(Date.now() / 1000);
+ var privateDownUrl = bucketManager.privateDownloadUrl(domain, key,
+ deadline);
+ res.json({
+ url: privateDownUrl,
+ });
+
});
app.get('/', function(req, res) {
- res.render('index.html', {
- domain: config.Domain,
- uptoken_url: config.Uptoken_Url
- });
+ res.render('index.html', {
+ domain: config.Domain,
+ uptoken_url: config.UptokenUrl
+ });
});
app.get('/multiple', function(req, res) {
- res.render('multiple.html', {
- domain: config.Domain,
- uptoken_url: config.Uptoken_Url
- });
+ res.render('multiple.html', {
+ domain: config.Domain,
+ uptoken_url: config.UptokenUrl
+ });
});
app.get('/formdata', function(req, res) {
- var token = uptoken.token();
- res.render('formdata.html', {
- domain: config.Domain,
- uptoken: token
- });
+ var token = putPolicy.uploadToken(mac);
+ res.render('formdata.html', {
+ domain: config.Domain,
+ uptoken: token
+ });
});
app.get('/performance', function(req, res) {
- var token = uptoken.token();
- res.render('performance.html', {
- uptoken: token
- });
+ var token = putPolicy.uploadToken(mac);
+ res.render('performance.html', {
+ uptoken: token
+ });
});
-qiniu.conf.ACCESS_KEY = config.ACCESS_KEY;
-qiniu.conf.SECRET_KEY = config.SECRET_KEY;
-
-var uptoken = new qiniu.rs.PutPolicy(config.Bucket_Name);
app.listen(config.Port, function() {
- console.log('Listening on port %d\n', config.Port);
- console.log('▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ Demos ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽')
- console.log(' ▹▹▹▹▹▹▹▹▹▹▹▹▹▹▹▹ Upload: http://127.0.0.1:%d ◁ ◁ ◁ ◁ ◁ ◁ ◁', config.Port);
- console.log(' ▹▹▹▹▹▹▹ Multiple upload: http://127.0.0.1:%d/multiple ◁ ◁ ◁', config.Port);
- console.log(' ▹▹▹▹▹▹▹ Formdata upload: http://127.0.0.1:%d/formdata ◁ ◁ ◁', config.Port);
- console.log(' ▹▹▹▹▹▹▹ Up Performance: http://127.0.0.1:%d/performance ◁ ◁', config.Port);
- console.log('△ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △\n');
+ console.log('Listening on port %d\n', config.Port);
+ console.log(
+ '▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ Demos ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽');
+ console.log(
+ ' ▹▹▹▹▹▹▹▹▹▹▹▹▹▹▹▹ Upload: http://127.0.0.1:%d ◁ ◁ ◁ ◁ ◁ ◁ ◁',
+ config.Port);
+ console.log(
+ ' ▹▹▹▹▹▹▹ Multiple upload: http://127.0.0.1:%d/multiple ◁ ◁ ◁',
+ config.Port);
+ console.log(
+ ' ▹▹▹▹▹▹▹ Formdata upload: http://127.0.0.1:%d/formdata ◁ ◁ ◁',
+ config.Port);
+ console.log(
+ ' ▹▹▹▹▹▹▹ Up Performance: http://127.0.0.1:%d/performance ◁ ◁',
+ config.Port);
+ console.log(
+ '△ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △\n'
+ );
});
diff --git a/demo/views/index.html b/demo/views/index.html
index 775e48da..9da749c9 100644
--- a/demo/views/index.html
+++ b/demo/views/index.html
@@ -28,6 +28,7 @@
@@ -136,7 +137,7 @@
},
'FileUploaded': function(up, file, info) {
// 每个文件上传成功后,处理相关的事情
- // 其中 info 是文件上传成功后,服务端返回的json,形式如
+ // 其中 info.response 是文件上传成功后,服务端返回的json,形式如
// {
// "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
// "key": "gogopher.jpg"
@@ -144,7 +145,7 @@
// 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
// var domain = up.getOption('domain');
- // var res = parseJSON(info);
+ // var res = parseJSON(info.response);
// var sourceLink = domain + res.key; 获取上传成功后的文件的Url
},
'Error': function(up, err, errTip) {
@@ -236,7 +237,7 @@ 查看初始化代码
},
'FileUploaded': function(up, file, info) {
// 每个文件上传成功后,处理相关的事情
- // 其中 info 是文件上传成功后,服务端返回的json,形式如
+ // 其中 info.response 是文件上传成功后,服务端返回的json,形式如
// {
// "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
// "key": "gogopher.jpg"
@@ -244,7 +245,7 @@ 查看初始化代码
// 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
// var domain = up.getOption('domain');
- // var res = parseJSON(info);
+ // var res = parseJSON(info.response);
// var sourceLink = domain + res.key; 获取上传成功后的文件的Url
},
'Error': function(up, err, errTip) {
diff --git a/dist/qiniu.js b/dist/qiniu.js
index 14b58171..30a6b465 100644
--- a/dist/qiniu.js
+++ b/dist/qiniu.js
@@ -6,7 +6,7 @@
*
* GitHub: http://github.com/qiniu/js-sdk
*
- * Date: 2017-7-12
+ * Date: 2017-7-26
*/
/*global plupload ,moxie*/
@@ -1403,8 +1403,9 @@
}
var info_extended = {};
plupload.extend(info_extended, that.parseJSON(info.response), res_downtoken);
+ info.response = that.stringifyJSON(info_extended);
if (_FileUploaded_Handler) {
- _FileUploaded_Handler(up, file, that.stringifyJSON(info_extended));
+ _FileUploaded_Handler(up, file, info);
}
} else {
uploader.trigger('Error', {
diff --git a/dist/qiniu.min.js b/dist/qiniu.min.js
index 19370e71..2a652ea3 100644
--- a/dist/qiniu.min.js
+++ b/dist/qiniu.min.js
@@ -1,3 +1,3 @@
/*! qiniu-js v1.0.21 | Copyright 2015 by Qiniu */
-!function(global){function createCookie(a,b,c){var d=new Date;d.setTime(d.getTime()+24*c*60*60*1e3);var e="; expires="+d.toGMTString();document.cookie=a+"="+b+e+"; path=/"}function readCookie(a){var b=a+"=";var c=document.cookie.split(";");for(var d=0,e=c.length;e>d;d++){var f=c[d];while(" "===f.charAt(0))f=f.substring(1,f.length);if(0===f.indexOf(b))return f.substring(b.length,f.length)}return null}window.localStorage||(window.localStorage={setItem:function(a,b){createCookie(a,b,30)},getItem:function(a){return readCookie(a)},removeItem:function(a){createCookie(a,"",-1)}});function QiniuJsSDK(){var that=this;this.detectIEVersion=function(){var a=4,b=document.createElement("div"),c=b.getElementsByTagName("i");while(b.innerHTML="",c[0])a++;return a>4?a:!1};var logger={MUTE:0,FATA:1,ERROR:2,WARN:3,INFO:4,DEBUG:5,TRACE:6,level:0};function log(a,b){var c="[qiniu-js-sdk]["+a+"]";var d=c;for(var e=0;e"+d+"
")}function makeLogFunc(a){var b=a.toLowerCase();logger[b]=function(){if(window.console&&window.console.log&&logger.level>=logger[a]){var c=Array.prototype.slice.call(arguments);log(b,c)}}}for(var property in logger)logger.hasOwnProperty(property)&&"number"==typeof logger[property]&&!logger.hasOwnProperty(property.toLowerCase())&&makeLogFunc(property);var qiniuUploadUrl;qiniuUploadUrl="https:"===window.location.protocol?"https://up.qbox.me":"http://upload.qiniu.com";var qiniuUploadUrls=["http://upload.qiniu.com","http://up.qiniu.com"];var qiniuUpHosts={http:["http://upload.qiniu.com","http://up.qiniu.com"],https:["https://up.qbox.me"]};var changeUrlTimes=0;function StatisticsLogger(){var a="https://uplog.qbox.me/log/3";var b=[];var c={waiting:0,processing:1,finished:2};this.log=function(a,d,e,f,g,h,i,j,k,l){var m=Array.prototype.join.call(arguments,",");b.push({log:m,status:c.waiting}),logger.debug("[STATISTICS] send log to statistics server",m)};function d(){var a=[];for(var d=0;dg;g++){var h=b.charCodeAt(g);var i=null;if(128>h)e++;else if(h>127&&2048>h)i=String.fromCharCode(h>>6|192,63&h|128);else if(63488&h^!0)i=String.fromCharCode(h>>12|224,h>>6&63|128,63&h|128);else{if(64512&h^!0)throw new RangeError("Unmatched trail surrogate at "+g);var j=b.charCodeAt(++g);if(64512&j^!0)throw new RangeError("Unmatched lead surrogate at "+(g-1));h=((1023&h)<<10)+(1023&j)+65536,i=String.fromCharCode(h>>18|240,h>>12&63|128,h>>6&63|128,63&h|128)}null!==i&&(e>d&&(c+=b.slice(d,e)),c+=i,d=e=g+1)}return e>d&&(c+=b.slice(d,f)),c},this.base64_decode=function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var c,d,e,f,g,h,i,j,k=0,l=0,m="",n=[];if(!a)return a;a+="";do f=b.indexOf(a.charAt(k++)),g=b.indexOf(a.charAt(k++)),h=b.indexOf(a.charAt(k++)),i=b.indexOf(a.charAt(k++)),j=f<<18|g<<12|h<<6|i,c=j>>16&255,d=j>>8&255,e=255&j,64===h?n[l++]=String.fromCharCode(c):64===i?n[l++]=String.fromCharCode(c,d):n[l++]=String.fromCharCode(c,d,e);while(k>18&63,g=j>>12&63,h=j>>6&63,i=63&j,n[l++]=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);while(kd;d++)b.push(that.stringifyJSON(a[d]));return"["+b.join(",")+"]"}if(null===a)return"null";var e=[];for(var f in a)a.hasOwnProperty(f)&&e.push(that.stringifyJSON(f)+":"+that.stringifyJSON(a[f]));return"{"+e.join(",")+"}";case"number":return a;case!1:return a;case"boolean":return a}},this.trim=function(a){return null===a?"":a.replace(/^\s+|\s+$/g,"")},this.uploader=function(a){var b=function(){var b=that.detectIEVersion();var c,d,e;var f="Safari"===moxie.core.utils.Env.browser&&moxie.core.utils.Env.version<=5&&"Windows"===moxie.core.utils.Env.os&&"7"===moxie.core.utils.Env.osVersion||"Safari"===moxie.core.utils.Env.browser&&"iOS"===moxie.core.utils.Env.os&&"7"===moxie.core.utils.Env.osVersion;b&&9>b&&a.chunk_size&&a.runtimes.indexOf("flash")>=0?a.chunk_size=0:f?a.chunk_size=0:(c=20,d=4<d&&(a.chunk_size=d))};var c=function(a){var b=[];var c=-1;for(var d=0;d=0?(d.bucket=d.scope.split(":")[0],d.key=d.scope.split(":")[1]):d.bucket=d.scope,d};var e=function(b){var e=d(b);var f=window.location.protocol+"//uc.qbox.me/v1/query?ak="+e.ak+"&bucket="+e.bucket;logger.debug("putPolicy: ",e),logger.debug("get uphosts from: ",f);var g=that.detectIEVersion();var h;g&&9>=g?(h=new moxie.xhr.XMLHttpRequest,moxie.core.utils.Env.swf_url=a.flash_swf_url):h=that.createAjax(),h.open("GET",f,!1);var i=function(){if(logger.debug("ajax.readyState: ",h.readyState),4===h.readyState)if(logger.debug("ajax.status: ",h.status),h.status<400){var a=that.parseJSON(h.responseText);qiniuUpHosts.http=c(a.http.up),qiniuUpHosts.https=c(a.https.up),logger.debug("get new uphosts: ",qiniuUpHosts),that.resetUploadUrl()}else logger.error("get uphosts error: ",h.responseText)};g&&9>=g?h.bind("readystatechange",i):h.onreadystatechange=i,h.send()};var f=function(b){return!that.token||a.uptoken_url&&that.tokenInfo.isExpired()?g(b):that.token};var g=function(b){if(a.uptoken)that.token=a.uptoken;else if(a.uptoken_url){logger.debug("get uptoken from: ",that.uptoken_url);var c=that.createAjax();if(c.open("GET",that.uptoken_url+"?"+ +new Date,!1),c.send(),200===c.status){var d=that.parseJSON(c.responseText);that.token=d.uptoken;var f=that.token.split(":");var g=that.parseJSON(that.URLSafeBase64Decode(f[2]));that.tokenMap||(that.tokenMap={});var h=function(a){return Math.ceil(a.getTime()/1e3)};var i=h(new Date(c.getResponseHeader("date")));var j=h(new Date);that.tokenInfo={serverDelay:j-i,deadline:g.deadline,isExpired:function(){var a=this.deadline-h(new Date)+this.serverDelay;return 600>a}},logger.debug("get new uptoken: ",that.token),logger.debug("get token info: ",that.tokenInfo)}else logger.error("get uptoken error: ",c.responseText)}else a.uptoken_func?(logger.debug("get uptoken from uptoken_func"),that.token=a.uptoken_func(b),logger.debug("get new uptoken: ",that.token)):logger.error("one of [uptoken, uptoken_url, uptoken_func] settings in options is required!");return that.token&&e(that.token),that.token};var h=function(b,c,d){var e="",f=!1;if(!a.save_key)if(f=b.getOption&&b.getOption("unique_names"),f=f||b.settings&&b.settings.unique_names){var g=that.getFileExtension(c.name);e=g?c.id+"."+g:c.id}else e="function"==typeof d?d(b,c):c.name;return e};var i=function(a){if(a&&a.match){var b=a.match(/^https?:\/\/([^:^\/]*)/);return b?b[1]:""}return""};var j=function(a){if(a&&a.match){var b=a.match(/(^https?)/);if(!b)return"";var c=b[1];return b=a.match(/^https?:\/\/([^:^\/]*):(\d*)/),b?b[2]:"http"===c?"80":"443"}return""};if(a.log_level&&(logger.level=a.log_level),!a.domain)throw"domain setting in options is required!";if(!a.browse_button)throw"browse_button setting in options is required!";if(!a.uptoken&&!a.uptoken_url&&!a.uptoken_func)throw"one of [uptoken, uptoken_url, uptoken_func] settings in options is required!";logger.debug("init uploader start"),logger.debug("environment: ",moxie.core.utils.Env),logger.debug("userAgent: ",navigator.userAgent);var k={};var l=a.init&&a.init.Error;var m=a.init&&a.init.FileUploaded;a.init.Error=function(){},a.init.FileUploaded=function(){},that.uptoken_url=a.uptoken_url,that.token="",that.key_handler="function"==typeof a.init.Key?a.init.Key:"",this.domain=a.domain;var n="";var o={isResumeUpload:!1,resumeFilesize:0,startTime:"",currentTime:""};b(),logger.debug("invoke reset_chunk_size()"),logger.debug("op.chunk_size: ",a.chunk_size);var p={url:qiniuUploadUrl,multipart_params:{token:""}};var q=that.detectIEVersion();q&&9>=q&&(p.multipart_params.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),plupload.extend(k,a,p),logger.debug("option: ",k);var r=new plupload.Uploader(k);logger.debug("new plupload.Uploader(option)"),r.bind("Init",function(b,c){logger.debug("Init event activated"),a.get_new_uptoken||g(null)}),logger.debug("bind Init event"),r.bind("FilesAdded",function(a,b){logger.debug("FilesAdded event activated");var c=a.getOption&&a.getOption("auto_start");c=c||a.settings&&a.settings.auto_start,logger.debug("auto_start: ",c),logger.debug("files: ",b);var d=function(){return"ios"===moxie.core.utils.Env.OS.toLowerCase()?!0:!1};if(d())for(var e=0;e=g&&(f.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),logger.debug("directUpload multipart_params_obj: ",f);var i=a.x_vars;if(void 0!==i&&"object"==typeof i)for(var j in i)i.hasOwnProperty(j)&&("function"==typeof i[j]?f["x:"+j]=i[j](b,c):"object"!=typeof i[j]&&(f["x:"+j]=i[j]));b.setOption({url:qiniuUploadUrl,multipart:!0,chunk_size:e()?a.max_file_size:void 0,multipart_params:f})};var e=function(){var a=navigator.userAgent.toLowerCase();return(a.match(/MicroMessenger/i)||"QQBrowser"===moxie.core.utils.Env.browser||a.match(/V1_AND_SQ/i))&&"android"===moxie.core.utils.Env.OS.toLowerCase()?!0:!1};var i=b.getOption&&b.getOption("chunk_size");if(i=i||b.settings&&b.settings.chunk_size,logger.debug("uploader.runtime: ",r.runtime),logger.debug("chunk_size: ",i),"html5"!==r.runtime&&"flash"!==r.runtime||!i)logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"),d(b,c,that.key_handler);else if(c.sizel-m&&100!==j.percent&&c.size===j.total?(c.percent=j.percent,c.loaded=j.offset,n=j.ctx,o.isResumeUpload=!0,o.resumeFilesize=j.offset,j.offset+k>c.size&&(k=c.size-j.offset)):localStorage.removeItem(c.name)}o.startTime=(new Date).getTime();var q={};var s=that.detectIEVersion();s&&9>=s&&(q.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),b.setOption({url:qiniuUploadUrl+"/mkblk/"+k,multipart:!1,chunk_size:i,required_features:"chunks",headers:{Authorization:"UpToken "+f(c)},multipart_params:q})}}),logger.debug("bind BeforeUpload event"),r.bind("UploadProgress",function(a,b){logger.trace("UploadProgress event activated"),o.currentTime=(new Date).getTime();var c=o.currentTime-o.startTime;var d=b.loaded||0;o.isResumeUpload&&(d=b.loaded-o.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),logger.debug("bind UploadProgress event"),r.bind("ChunkUploaded",function(a,b,c){logger.debug("ChunkUploaded event activated"),logger.debug("ChunkUploaded file: ",b),logger.debug("ChunkUploaded info: ",c);var d=that.parseJSON(c.response);logger.debug("ChunkUploaded res: ",d),n=n?n+","+d.ctx:d.ctx;var e=c.total-c.offset;var g=a.getOption&&a.getOption("chunk_size");g=g||a.settings&&a.settings.chunk_size,g>e&&(a.setOption({url:qiniuUploadUrl+"/mkblk/"+e}),logger.debug("up.setOption url: ",qiniuUploadUrl+"/mkblk/"+e)),a.setOption({headers:{Authorization:"UpToken "+f(b)}}),localStorage.setItem(b.name,that.stringifyJSON({ctx:n,percent:b.percent,total:c.total,offset:c.offset,time:(new Date).getTime()}))}),logger.debug("bind ChunkUploaded event");var s=qiniuUploadUrls.length;var t=function(a){return s-->0?(setTimeout(function(){that.resetUploadUrl(),a.status=plupload.QUEUED,r.stop(),r.start()},0),!0):(s=qiniuUploadUrls.length,!1)};return r.bind("Error",function(b){return function(c,d){logger.error("Error event activated"),logger.error("err: ",d);var e=new Date;var f="";var g=d.file;if(g){switch(d.code){case plupload.FAILED:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.FILE_SIZE_ERROR:var h=c.getOption&&c.getOption("max_file_size");h=h||c.settings&&c.settings.max_file_size,f="\u6d4f\u89c8\u5668\u6700\u5927\u53ef\u4e0a\u4f20"+h+"\u3002\u66f4\u5927\u6587\u4ef6\u8bf7\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u3002";break;case plupload.FILE_EXTENSION_ERROR:f="\u6587\u4ef6\u9a8c\u8bc1\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002";break;case plupload.HTTP_ERROR:if(""===d.response){if(f=d.message||"\u672a\u77e5\u7f51\u7edc\u9519\u8bef\u3002",!t(g))return;break}var k=that.parseJSON(d.response);var l=k.error;switch(d.status){case 400:f="\u8bf7\u6c42\u62a5\u6587\u683c\u5f0f\u9519\u8bef\u3002";break;case 401:f="\u5ba2\u6237\u7aef\u8ba4\u8bc1\u6388\u6743\u5931\u8d25\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 405:f="\u5ba2\u6237\u7aef\u8bf7\u6c42\u9519\u8bef\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 579:f="\u8d44\u6e90\u4e0a\u4f20\u6210\u529f\uff0c\u4f46\u56de\u8c03\u5931\u8d25\u3002";break;case 599:if(f="\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002",!t(g))return;break;case 614:f="\u6587\u4ef6\u5df2\u5b58\u5728\u3002";try{k=that.parseJSON(k.error),l=k.error||"file exists"}catch(m){l=k.error||"file exists"}break;case 631:f="\u6307\u5b9a\u7a7a\u95f4\u4e0d\u5b58\u5728\u3002";break;case 701:f="\u4e0a\u4f20\u6570\u636e\u5757\u6821\u9a8c\u51fa\u9519\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;default:if(f="\u672a\u77e5\u9519\u8bef\u3002",!t(g))return}f=f+"("+d.status+"\uff1a"+l+")";break;case plupload.SECURITY_ERROR:f="\u5b89\u5168\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002";break;case plupload.GENERIC_ERROR:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.IO_ERROR:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.INIT_ERROR:f="\u7f51\u7ad9\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002",r.destroy();break;default:if(f=d.message+d.details,!t(g))return}b&&b(c,d,f)}if(c.refresh(),!a.disable_statistics_report){var n=d&&d.responseHeaders&&d.responseHeaders.match?d.responseHeaders.match(/(X-Reqid\:\ )([\w\.\%-]*)/):[];var o=n[2];var p=plupload.HTTP_ERROR?d.status:d.code;var q=g._start_at?g._start_at.getTime():e.getTime();statisticsLogger.log(0===p?ExtraErrors.NetworkError:p,o,i(c.settings.url),void 0,j(c.settings.url),e.getTime()-q,q,d.file.size*(d.file.percent/100),"jssdk-"+c.runtime,g.size)}}}(l)),logger.debug("bind Error event"),r.bind("FileUploaded",function(b){return function(c,d,e){logger.debug("FileUploaded event activated"),logger.debug("FileUploaded file: ",d),logger.debug("FileUploaded info: ",e);var f=new Date;var g=function(c,d,e){if(logger.debug("FileUploaded last step:",e),a.downtoken_url){var f=that.createAjax();f.open("POST",a.downtoken_url,!0),f.setRequestHeader("Content-type","application/x-www-form-urlencoded"),f.onreadystatechange=function(){if(4===f.readyState)if(200===f.status){var a;try{a=that.parseJSON(f.responseText)}catch(g){throw"invalid json format"}var h={};plupload.extend(h,that.parseJSON(e.response),a),b&&b(c,d,that.stringifyJSON(h))}else r.trigger("Error",{status:f.status,response:f.responseText,file:d,code:plupload.HTTP_ERROR})},f.send("key="+that.parseJSON(e.response).key+"&domain="+a.domain)}else b&&b(c,d,e)};var k=that.parseJSON(e.response);if(n=n?n:k.ctx,logger.debug("ctx: ",n),n){var l="";logger.debug("save_key: ",a.save_key),a.save_key||(l=h(c,d,that.key_handler),l=l?"/key/"+that.URLSafeBase64Encode(l):"");var m="/fname/"+that.URLSafeBase64Encode(d.name);logger.debug("op.x_vars: ",a.x_vars);var o=a.x_vars,p="",q="";if(void 0!==o&&"object"==typeof o)for(var s in o)o.hasOwnProperty(s)&&("function"==typeof o[s]?p=that.URLSafeBase64Encode(o[s](c,d)):"object"!=typeof o[s]&&(p=that.URLSafeBase64Encode(o[s])),q+="/x:"+s+"/"+p);var t=qiniuUploadUrl+"/mkfile/"+d.size+l+m+q;var u=that.detectIEVersion();var v;u&&9>=u?(v=new moxie.xhr.XMLHttpRequest,moxie.core.utils.Env.swf_url=a.flash_swf_url):v=that.createAjax(),v.open("POST",t,!0),v.setRequestHeader("Content-Type","text/plain;charset=UTF-8"),v.setRequestHeader("Authorization","UpToken "+that.token);var w=function(){if(logger.debug("ajax.readyState: ",v.readyState),4===v.readyState){localStorage.removeItem(d.name);var a;200===v.status?(a={status:v.status,response:v.responseText,responseHeaders:v.getAllResponseHeaders()},logger.debug("mkfile is success: ",a),g(c,d,a)):(a={status:v.status,response:v.responseText,file:d,code:-200,responseHeaders:v.getAllResponseHeaders()},logger.debug("mkfile is error: ",a),r.trigger("Error",a))}};u&&9>=u?v.bind("readystatechange",w):v.onreadystatechange=w,v.send(n),logger.debug("mkfile: ",t)}else g(c,d,e);if(!a.disable_statistics_report){var x=e.responseHeaders.match(/(X-Reqid\:\ )([\w\.\%-]*)/)[2];var y=d._start_at?d._start_at.getTime():f.getTime();statisticsLogger.log(e.status,x,i(c.settings.url),void 0,j(c.settings.url),f.getTime()-y,y,d.size,"jssdk-"+c.runtime,d.size)}}}(m)),logger.debug("bind FileUploaded event"),r.bind("FilesRemoved",function(b,c){var d=new Date;if(!a.disable_statistics_report)for(var e=0;eg;g++){if(d=a[g],!d.fop)return!1;switch(d.fop){case"watermark":f+=this.watermark(d)+"|";break;case"imageView2":f+=this.imageView2(d)+"|";break;case"imageMogr2":f+=this.imageMogr2(d)+"|";break;default:e=!0}if(e)return!1}if(b){f=this.getUrl(b)+"?"+f;var i=f.length;"|"===f.slice(i-1)&&(f=f.slice(0,i-1))}return f}return!1}}var Qiniu=new QiniuJsSDK;global.Qiniu=Qiniu,global.QiniuJsSDK=QiniuJsSDK}(window);
+!function(global){function createCookie(a,b,c){var d=new Date;d.setTime(d.getTime()+24*c*60*60*1e3);var e="; expires="+d.toGMTString();document.cookie=a+"="+b+e+"; path=/"}function readCookie(a){var b=a+"=";var c=document.cookie.split(";");for(var d=0,e=c.length;e>d;d++){var f=c[d];while(" "===f.charAt(0))f=f.substring(1,f.length);if(0===f.indexOf(b))return f.substring(b.length,f.length)}return null}window.localStorage||(window.localStorage={setItem:function(a,b){createCookie(a,b,30)},getItem:function(a){return readCookie(a)},removeItem:function(a){createCookie(a,"",-1)}});function QiniuJsSDK(){var that=this;this.detectIEVersion=function(){var a=4,b=document.createElement("div"),c=b.getElementsByTagName("i");while(b.innerHTML="",c[0])a++;return a>4?a:!1};var logger={MUTE:0,FATA:1,ERROR:2,WARN:3,INFO:4,DEBUG:5,TRACE:6,level:0};function log(a,b){var c="[qiniu-js-sdk]["+a+"]";var d=c;for(var e=0;e"+d+"")}function makeLogFunc(a){var b=a.toLowerCase();logger[b]=function(){if(window.console&&window.console.log&&logger.level>=logger[a]){var c=Array.prototype.slice.call(arguments);log(b,c)}}}for(var property in logger)logger.hasOwnProperty(property)&&"number"==typeof logger[property]&&!logger.hasOwnProperty(property.toLowerCase())&&makeLogFunc(property);var qiniuUploadUrl;qiniuUploadUrl="https:"===window.location.protocol?"https://up.qbox.me":"http://upload.qiniu.com";var qiniuUploadUrls=["http://upload.qiniu.com","http://up.qiniu.com"];var qiniuUpHosts={http:["http://upload.qiniu.com","http://up.qiniu.com"],https:["https://up.qbox.me"]};var changeUrlTimes=0;function StatisticsLogger(){var a="https://uplog.qbox.me/log/3";var b=[];var c={waiting:0,processing:1,finished:2};this.log=function(a,d,e,f,g,h,i,j,k,l){var m=Array.prototype.join.call(arguments,",");b.push({log:m,status:c.waiting}),logger.debug("[STATISTICS] send log to statistics server",m)};function d(){var a=[];for(var d=0;dg;g++){var h=b.charCodeAt(g);var i=null;if(128>h)e++;else if(h>127&&2048>h)i=String.fromCharCode(h>>6|192,63&h|128);else if(63488&h^!0)i=String.fromCharCode(h>>12|224,h>>6&63|128,63&h|128);else{if(64512&h^!0)throw new RangeError("Unmatched trail surrogate at "+g);var j=b.charCodeAt(++g);if(64512&j^!0)throw new RangeError("Unmatched lead surrogate at "+(g-1));h=((1023&h)<<10)+(1023&j)+65536,i=String.fromCharCode(h>>18|240,h>>12&63|128,h>>6&63|128,63&h|128)}null!==i&&(e>d&&(c+=b.slice(d,e)),c+=i,d=e=g+1)}return e>d&&(c+=b.slice(d,f)),c},this.base64_decode=function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var c,d,e,f,g,h,i,j,k=0,l=0,m="",n=[];if(!a)return a;a+="";do f=b.indexOf(a.charAt(k++)),g=b.indexOf(a.charAt(k++)),h=b.indexOf(a.charAt(k++)),i=b.indexOf(a.charAt(k++)),j=f<<18|g<<12|h<<6|i,c=j>>16&255,d=j>>8&255,e=255&j,64===h?n[l++]=String.fromCharCode(c):64===i?n[l++]=String.fromCharCode(c,d):n[l++]=String.fromCharCode(c,d,e);while(k>18&63,g=j>>12&63,h=j>>6&63,i=63&j,n[l++]=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);while(kd;d++)b.push(that.stringifyJSON(a[d]));return"["+b.join(",")+"]"}if(null===a)return"null";var e=[];for(var f in a)a.hasOwnProperty(f)&&e.push(that.stringifyJSON(f)+":"+that.stringifyJSON(a[f]));return"{"+e.join(",")+"}";case"number":return a;case!1:return a;case"boolean":return a}},this.trim=function(a){return null===a?"":a.replace(/^\s+|\s+$/g,"")},this.uploader=function(a){var b=function(){var b=that.detectIEVersion();var c,d,e;var f="Safari"===moxie.core.utils.Env.browser&&moxie.core.utils.Env.version<=5&&"Windows"===moxie.core.utils.Env.os&&"7"===moxie.core.utils.Env.osVersion||"Safari"===moxie.core.utils.Env.browser&&"iOS"===moxie.core.utils.Env.os&&"7"===moxie.core.utils.Env.osVersion;b&&9>b&&a.chunk_size&&a.runtimes.indexOf("flash")>=0?a.chunk_size=0:f?a.chunk_size=0:(c=20,d=4<d&&(a.chunk_size=d))};var c=function(a){var b=[];var c=-1;for(var d=0;d=0?(d.bucket=d.scope.split(":")[0],d.key=d.scope.split(":")[1]):d.bucket=d.scope,d};var e=function(b){var e=d(b);var f=window.location.protocol+"//uc.qbox.me/v1/query?ak="+e.ak+"&bucket="+e.bucket;logger.debug("putPolicy: ",e),logger.debug("get uphosts from: ",f);var g=that.detectIEVersion();var h;g&&9>=g?(h=new moxie.xhr.XMLHttpRequest,moxie.core.utils.Env.swf_url=a.flash_swf_url):h=that.createAjax(),h.open("GET",f,!1);var i=function(){if(logger.debug("ajax.readyState: ",h.readyState),4===h.readyState)if(logger.debug("ajax.status: ",h.status),h.status<400){var a=that.parseJSON(h.responseText);qiniuUpHosts.http=c(a.http.up),qiniuUpHosts.https=c(a.https.up),logger.debug("get new uphosts: ",qiniuUpHosts),that.resetUploadUrl()}else logger.error("get uphosts error: ",h.responseText)};g&&9>=g?h.bind("readystatechange",i):h.onreadystatechange=i,h.send()};var f=function(b){return!that.token||a.uptoken_url&&that.tokenInfo.isExpired()?g(b):that.token};var g=function(b){if(a.uptoken)that.token=a.uptoken;else if(a.uptoken_url){logger.debug("get uptoken from: ",that.uptoken_url);var c=that.createAjax();if(c.open("GET",that.uptoken_url+"?"+ +new Date,!1),c.send(),200===c.status){var d=that.parseJSON(c.responseText);that.token=d.uptoken;var f=that.token.split(":");var g=that.parseJSON(that.URLSafeBase64Decode(f[2]));that.tokenMap||(that.tokenMap={});var h=function(a){return Math.ceil(a.getTime()/1e3)};var i=h(new Date(c.getResponseHeader("date")));var j=h(new Date);that.tokenInfo={serverDelay:j-i,deadline:g.deadline,isExpired:function(){var a=this.deadline-h(new Date)+this.serverDelay;return 600>a}},logger.debug("get new uptoken: ",that.token),logger.debug("get token info: ",that.tokenInfo)}else logger.error("get uptoken error: ",c.responseText)}else a.uptoken_func?(logger.debug("get uptoken from uptoken_func"),that.token=a.uptoken_func(b),logger.debug("get new uptoken: ",that.token)):logger.error("one of [uptoken, uptoken_url, uptoken_func] settings in options is required!");return that.token&&e(that.token),that.token};var h=function(b,c,d){var e="",f=!1;if(!a.save_key)if(f=b.getOption&&b.getOption("unique_names"),f=f||b.settings&&b.settings.unique_names){var g=that.getFileExtension(c.name);e=g?c.id+"."+g:c.id}else e="function"==typeof d?d(b,c):c.name;return e};var i=function(a){if(a&&a.match){var b=a.match(/^https?:\/\/([^:^\/]*)/);return b?b[1]:""}return""};var j=function(a){if(a&&a.match){var b=a.match(/(^https?)/);if(!b)return"";var c=b[1];return b=a.match(/^https?:\/\/([^:^\/]*):(\d*)/),b?b[2]:"http"===c?"80":"443"}return""};if(a.log_level&&(logger.level=a.log_level),!a.domain)throw"domain setting in options is required!";if(!a.browse_button)throw"browse_button setting in options is required!";if(!a.uptoken&&!a.uptoken_url&&!a.uptoken_func)throw"one of [uptoken, uptoken_url, uptoken_func] settings in options is required!";logger.debug("init uploader start"),logger.debug("environment: ",moxie.core.utils.Env),logger.debug("userAgent: ",navigator.userAgent);var k={};var l=a.init&&a.init.Error;var m=a.init&&a.init.FileUploaded;a.init.Error=function(){},a.init.FileUploaded=function(){},that.uptoken_url=a.uptoken_url,that.token="",that.key_handler="function"==typeof a.init.Key?a.init.Key:"",this.domain=a.domain;var n="";var o={isResumeUpload:!1,resumeFilesize:0,startTime:"",currentTime:""};b(),logger.debug("invoke reset_chunk_size()"),logger.debug("op.chunk_size: ",a.chunk_size);var p={url:qiniuUploadUrl,multipart_params:{token:""}};var q=that.detectIEVersion();q&&9>=q&&(p.multipart_params.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),plupload.extend(k,a,p),logger.debug("option: ",k);var r=new plupload.Uploader(k);logger.debug("new plupload.Uploader(option)"),r.bind("Init",function(b,c){logger.debug("Init event activated"),a.get_new_uptoken||g(null)}),logger.debug("bind Init event"),r.bind("FilesAdded",function(a,b){logger.debug("FilesAdded event activated");var c=a.getOption&&a.getOption("auto_start");c=c||a.settings&&a.settings.auto_start,logger.debug("auto_start: ",c),logger.debug("files: ",b);var d=function(){return"ios"===moxie.core.utils.Env.OS.toLowerCase()?!0:!1};if(d())for(var e=0;e=g&&(f.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),logger.debug("directUpload multipart_params_obj: ",f);var i=a.x_vars;if(void 0!==i&&"object"==typeof i)for(var j in i)i.hasOwnProperty(j)&&("function"==typeof i[j]?f["x:"+j]=i[j](b,c):"object"!=typeof i[j]&&(f["x:"+j]=i[j]));b.setOption({url:qiniuUploadUrl,multipart:!0,chunk_size:e()?a.max_file_size:void 0,multipart_params:f})};var e=function(){var a=navigator.userAgent.toLowerCase();return(a.match(/MicroMessenger/i)||"QQBrowser"===moxie.core.utils.Env.browser||a.match(/V1_AND_SQ/i))&&"android"===moxie.core.utils.Env.OS.toLowerCase()?!0:!1};var i=b.getOption&&b.getOption("chunk_size");if(i=i||b.settings&&b.settings.chunk_size,logger.debug("uploader.runtime: ",r.runtime),logger.debug("chunk_size: ",i),"html5"!==r.runtime&&"flash"!==r.runtime||!i)logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"),d(b,c,that.key_handler);else if(c.sizel-m&&100!==j.percent&&c.size===j.total?(c.percent=j.percent,c.loaded=j.offset,n=j.ctx,o.isResumeUpload=!0,o.resumeFilesize=j.offset,j.offset+k>c.size&&(k=c.size-j.offset)):localStorage.removeItem(c.name)}o.startTime=(new Date).getTime();var q={};var s=that.detectIEVersion();s&&9>=s&&(q.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),b.setOption({url:qiniuUploadUrl+"/mkblk/"+k,multipart:!1,chunk_size:i,required_features:"chunks",headers:{Authorization:"UpToken "+f(c)},multipart_params:q})}}),logger.debug("bind BeforeUpload event"),r.bind("UploadProgress",function(a,b){logger.trace("UploadProgress event activated"),o.currentTime=(new Date).getTime();var c=o.currentTime-o.startTime;var d=b.loaded||0;o.isResumeUpload&&(d=b.loaded-o.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),logger.debug("bind UploadProgress event"),r.bind("ChunkUploaded",function(a,b,c){logger.debug("ChunkUploaded event activated"),logger.debug("ChunkUploaded file: ",b),logger.debug("ChunkUploaded info: ",c);var d=that.parseJSON(c.response);logger.debug("ChunkUploaded res: ",d),n=n?n+","+d.ctx:d.ctx;var e=c.total-c.offset;var g=a.getOption&&a.getOption("chunk_size");g=g||a.settings&&a.settings.chunk_size,g>e&&(a.setOption({url:qiniuUploadUrl+"/mkblk/"+e}),logger.debug("up.setOption url: ",qiniuUploadUrl+"/mkblk/"+e)),a.setOption({headers:{Authorization:"UpToken "+f(b)}}),localStorage.setItem(b.name,that.stringifyJSON({ctx:n,percent:b.percent,total:c.total,offset:c.offset,time:(new Date).getTime()}))}),logger.debug("bind ChunkUploaded event");var s=qiniuUploadUrls.length;var t=function(a){return s-->0?(setTimeout(function(){that.resetUploadUrl(),a.status=plupload.QUEUED,r.stop(),r.start()},0),!0):(s=qiniuUploadUrls.length,!1)};return r.bind("Error",function(b){return function(c,d){logger.error("Error event activated"),logger.error("err: ",d);var e=new Date;var f="";var g=d.file;if(g){switch(d.code){case plupload.FAILED:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.FILE_SIZE_ERROR:var h=c.getOption&&c.getOption("max_file_size");h=h||c.settings&&c.settings.max_file_size,f="\u6d4f\u89c8\u5668\u6700\u5927\u53ef\u4e0a\u4f20"+h+"\u3002\u66f4\u5927\u6587\u4ef6\u8bf7\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u3002";break;case plupload.FILE_EXTENSION_ERROR:f="\u6587\u4ef6\u9a8c\u8bc1\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002";break;case plupload.HTTP_ERROR:if(""===d.response){if(f=d.message||"\u672a\u77e5\u7f51\u7edc\u9519\u8bef\u3002",!t(g))return;break}var k=that.parseJSON(d.response);var l=k.error;switch(d.status){case 400:f="\u8bf7\u6c42\u62a5\u6587\u683c\u5f0f\u9519\u8bef\u3002";break;case 401:f="\u5ba2\u6237\u7aef\u8ba4\u8bc1\u6388\u6743\u5931\u8d25\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 405:f="\u5ba2\u6237\u7aef\u8bf7\u6c42\u9519\u8bef\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 579:f="\u8d44\u6e90\u4e0a\u4f20\u6210\u529f\uff0c\u4f46\u56de\u8c03\u5931\u8d25\u3002";break;case 599:if(f="\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002",!t(g))return;break;case 614:f="\u6587\u4ef6\u5df2\u5b58\u5728\u3002";try{k=that.parseJSON(k.error),l=k.error||"file exists"}catch(m){l=k.error||"file exists"}break;case 631:f="\u6307\u5b9a\u7a7a\u95f4\u4e0d\u5b58\u5728\u3002";break;case 701:f="\u4e0a\u4f20\u6570\u636e\u5757\u6821\u9a8c\u51fa\u9519\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;default:if(f="\u672a\u77e5\u9519\u8bef\u3002",!t(g))return}f=f+"("+d.status+"\uff1a"+l+")";break;case plupload.SECURITY_ERROR:f="\u5b89\u5168\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002";break;case plupload.GENERIC_ERROR:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.IO_ERROR:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.INIT_ERROR:f="\u7f51\u7ad9\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002",r.destroy();break;default:if(f=d.message+d.details,!t(g))return}b&&b(c,d,f)}if(c.refresh(),!a.disable_statistics_report){var n=d&&d.responseHeaders&&d.responseHeaders.match?d.responseHeaders.match(/(X-Reqid\:\ )([\w\.\%-]*)/):[];var o=n[2];var p=plupload.HTTP_ERROR?d.status:d.code;var q=g._start_at?g._start_at.getTime():e.getTime();statisticsLogger.log(0===p?ExtraErrors.NetworkError:p,o,i(c.settings.url),void 0,j(c.settings.url),e.getTime()-q,q,d.file.size*(d.file.percent/100),"jssdk-"+c.runtime,g.size)}}}(l)),logger.debug("bind Error event"),r.bind("FileUploaded",function(b){return function(c,d,e){logger.debug("FileUploaded event activated"),logger.debug("FileUploaded file: ",d),logger.debug("FileUploaded info: ",e);var f=new Date;var g=function(c,d,e){if(logger.debug("FileUploaded last step:",e),a.downtoken_url){var f=that.createAjax();f.open("POST",a.downtoken_url,!0),f.setRequestHeader("Content-type","application/x-www-form-urlencoded"),f.onreadystatechange=function(){if(4===f.readyState)if(200===f.status){var a;try{a=that.parseJSON(f.responseText)}catch(g){throw"invalid json format"}var h={};plupload.extend(h,that.parseJSON(e.response),a),e.response=that.stringifyJSON(h),b&&b(c,d,e)}else r.trigger("Error",{status:f.status,response:f.responseText,file:d,code:plupload.HTTP_ERROR})},f.send("key="+that.parseJSON(e.response).key+"&domain="+a.domain)}else b&&b(c,d,e)};var k=that.parseJSON(e.response);if(n=n?n:k.ctx,logger.debug("ctx: ",n),n){var l="";logger.debug("save_key: ",a.save_key),a.save_key||(l=h(c,d,that.key_handler),l=l?"/key/"+that.URLSafeBase64Encode(l):"");var m="/fname/"+that.URLSafeBase64Encode(d.name);logger.debug("op.x_vars: ",a.x_vars);var o=a.x_vars,p="",q="";if(void 0!==o&&"object"==typeof o)for(var s in o)o.hasOwnProperty(s)&&("function"==typeof o[s]?p=that.URLSafeBase64Encode(o[s](c,d)):"object"!=typeof o[s]&&(p=that.URLSafeBase64Encode(o[s])),q+="/x:"+s+"/"+p);var t=qiniuUploadUrl+"/mkfile/"+d.size+l+m+q;var u=that.detectIEVersion();var v;u&&9>=u?(v=new moxie.xhr.XMLHttpRequest,moxie.core.utils.Env.swf_url=a.flash_swf_url):v=that.createAjax(),v.open("POST",t,!0),v.setRequestHeader("Content-Type","text/plain;charset=UTF-8"),v.setRequestHeader("Authorization","UpToken "+that.token);var w=function(){if(logger.debug("ajax.readyState: ",v.readyState),4===v.readyState){localStorage.removeItem(d.name);var a;200===v.status?(a={status:v.status,response:v.responseText,responseHeaders:v.getAllResponseHeaders()},logger.debug("mkfile is success: ",a),g(c,d,a)):(a={status:v.status,response:v.responseText,file:d,code:-200,responseHeaders:v.getAllResponseHeaders()},logger.debug("mkfile is error: ",a),r.trigger("Error",a))}};u&&9>=u?v.bind("readystatechange",w):v.onreadystatechange=w,v.send(n),logger.debug("mkfile: ",t)}else g(c,d,e);if(!a.disable_statistics_report){var x=e.responseHeaders.match(/(X-Reqid\:\ )([\w\.\%-]*)/)[2];var y=d._start_at?d._start_at.getTime():f.getTime();statisticsLogger.log(e.status,x,i(c.settings.url),void 0,j(c.settings.url),f.getTime()-y,y,d.size,"jssdk-"+c.runtime,d.size)}}}(m)),logger.debug("bind FileUploaded event"),r.bind("FilesRemoved",function(b,c){var d=new Date;if(!a.disable_statistics_report)for(var e=0;eg;g++){if(d=a[g],!d.fop)return!1;switch(d.fop){case"watermark":f+=this.watermark(d)+"|";break;case"imageView2":f+=this.imageView2(d)+"|";break;case"imageMogr2":f+=this.imageMogr2(d)+"|";break;default:e=!0}if(e)return!1}if(b){f=this.getUrl(b)+"?"+f;var i=f.length;"|"===f.slice(i-1)&&(f=f.slice(0,i-1))}return f}return!1}}var Qiniu=new QiniuJsSDK;global.Qiniu=Qiniu,global.QiniuJsSDK=QiniuJsSDK}(window);
//# sourceMappingURL=dist/qiniu.min.map
\ No newline at end of file
diff --git a/dist/qiniu.min.map b/dist/qiniu.min.map
index 88e01426..d26b77a0 100644
--- a/dist/qiniu.min.map
+++ b/dist/qiniu.min.map
@@ -1 +1 @@
-{"version":3,"file":"dist/qiniu.min.js","sources":["dist/qiniu.js"],"names":["global","createCookie","key","value","exp","date","Date","setTime","getTime","expires","toGMTString","document","cookie","readCookie","nameEQ","ca","split","i","max","length","c","charAt","substring","indexOf","window","localStorage","setItem","getItem","removeItem","QiniuJsSDK","that","this","detectIEVersion","v","div","createElement","all","getElementsByTagName","innerHTML","logger","MUTE","FATA","ERROR","WARN","INFO","DEBUG","TRACE","level","log","type","args","header","msg","stringifyJSON","console","unshift","apply","getElementById","makeLogFunc","code","func","toLowerCase","Array","prototype","slice","call","arguments","property","hasOwnProperty","qiniuUploadUrl","location","protocol","qiniuUploadUrls","qiniuUpHosts","http","https","changeUrlTimes","StatisticsLogger","qiniuCollectUploadLogUrl","queue","TaskStatus","waiting","processing","finished","req_id","host","remote_ip","port","duration","up_time","bytes_sent","up_type","file_size","join","push","status","debug","tick","unFinishedTasks","send","task","ajax","createAjax","open","setRequestHeader","token","onreadystatechange","readyState","setInterval","statisticsLogger","ExtraErrors","ZeroSizeFile","InvalidToken","InvalidArgument","InvalidFile","Cancelled","NetworkError","UnknownError","TimedOut","UnknownHost","CannotConnectToHost","NetworkConnectionLost","resetUploadUrl","hosts","isImage","url","test","getFileExtension","filename","tempArr","ext","pop","utf8_encode","argString","string","utftext","start","end","stringl","n","c1","charCodeAt","enc","String","fromCharCode","RangeError","c2","base64_decode","data","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","dec","tmp_arr","base64_encode","URLSafeBase64Encode","replace","URLSafeBase64Decode","argument","xmlhttp","XMLHttpRequest","ActiveXObject","parseJSON","JSON","parse","rx_dangerous","text","lastIndex","a","toString","eval","obj","stringify","map","strArr","len","trim","uploader","op","reset_chunk_size","ie","BLOCK_BITS","MAX_CHUNK_SIZE","chunk_size","isSpecialSafari","moxie","core","utils","Env","browser","version","os","osVersion","runtimes","plupload","parseSize","getHosts","result","uploadIndex","uploadDomain","getPutPolicy","uptoken","segments","ak","putPolicy","scope","bucket","getUpHosts","uphosts_url","xhr","swf_url","flash_swf_url","res","responseText","up","error","bind","getUptoken","file","uptoken_url","tokenInfo","isExpired","getNewUpToken","tokenMap","getTimestamp","time","Math","ceil","serverTime","getResponseHeader","clientTime","serverDelay","deadline","leftTime","uptoken_func","getFileKey","unique_names","save_key","getOption","settings","name","id","getDomainFromUrl","match","groups","getPortFromUrl","log_level","domain","browse_button","navigator","userAgent","option","_Error_Handler","init","Error","_FileUploaded_Handler","FileUploaded","key_handler","Key","ctx","speedCalInfo","isResumeUpload","resumeFilesize","startTime","currentTime","defaultSetting","multipart_params","accept","extend","Uploader","params","get_new_uptoken","files","auto_start","is_ios","OS","setTimeout","refresh","_start_at","speed","directUpload","multipart_params_obj","x_vars","undefined","x_key","setOption","multipart","is_android_weixin_or_qq","max_file_size","ua","runtime","size","localFileInfo","blockSize","now","before","aDay","percent","total","loaded","offset","required_features","headers","Authorization","trace","timeUsed","fileUploaded","toFixed","info","response","leftSize","retries","unknow_error_retry","QUEUED","stop","err","nowTime","errTip","FAILED","FILE_SIZE_ERROR","FILE_EXTENSION_ERROR","HTTP_ERROR","message","errorObj","errorText","e","SECURITY_ERROR","GENERIC_ERROR","IO_ERROR","INIT_ERROR","destroy","details","disable_statistics_report","matchedGroups","responseHeaders","errcode","startAt","last_step","downtoken_url","ajax_downtoken","res_downtoken","info_extended","trigger","fname","x_val","x_vars_url","ajaxInfo","getAllResponseHeaders","getUrl","encodeURI","imageView2","mode","w","h","q","format","imageUrl","imageMogr2","auto_orient","thumbnail","strip","gravity","crop","quality","rotate","blur","watermark","image","font","fontsize","fill","dissolve","dx","dy","imageInfo","exif","get","pipeline","arr","isArray","Object","errOp","fop","Qiniu"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"dist/qiniu.min.js","sources":["dist/qiniu.js"],"names":["global","createCookie","key","value","exp","date","Date","setTime","getTime","expires","toGMTString","document","cookie","readCookie","nameEQ","ca","split","i","max","length","c","charAt","substring","indexOf","window","localStorage","setItem","getItem","removeItem","QiniuJsSDK","that","this","detectIEVersion","v","div","createElement","all","getElementsByTagName","innerHTML","logger","MUTE","FATA","ERROR","WARN","INFO","DEBUG","TRACE","level","log","type","args","header","msg","stringifyJSON","console","unshift","apply","getElementById","makeLogFunc","code","func","toLowerCase","Array","prototype","slice","call","arguments","property","hasOwnProperty","qiniuUploadUrl","location","protocol","qiniuUploadUrls","qiniuUpHosts","http","https","changeUrlTimes","StatisticsLogger","qiniuCollectUploadLogUrl","queue","TaskStatus","waiting","processing","finished","req_id","host","remote_ip","port","duration","up_time","bytes_sent","up_type","file_size","join","push","status","debug","tick","unFinishedTasks","send","task","ajax","createAjax","open","setRequestHeader","token","onreadystatechange","readyState","setInterval","statisticsLogger","ExtraErrors","ZeroSizeFile","InvalidToken","InvalidArgument","InvalidFile","Cancelled","NetworkError","UnknownError","TimedOut","UnknownHost","CannotConnectToHost","NetworkConnectionLost","resetUploadUrl","hosts","isImage","url","test","getFileExtension","filename","tempArr","ext","pop","utf8_encode","argString","string","utftext","start","end","stringl","n","c1","charCodeAt","enc","String","fromCharCode","RangeError","c2","base64_decode","data","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","dec","tmp_arr","base64_encode","URLSafeBase64Encode","replace","URLSafeBase64Decode","argument","xmlhttp","XMLHttpRequest","ActiveXObject","parseJSON","JSON","parse","rx_dangerous","text","lastIndex","a","toString","eval","obj","stringify","map","strArr","len","trim","uploader","op","reset_chunk_size","ie","BLOCK_BITS","MAX_CHUNK_SIZE","chunk_size","isSpecialSafari","moxie","core","utils","Env","browser","version","os","osVersion","runtimes","plupload","parseSize","getHosts","result","uploadIndex","uploadDomain","getPutPolicy","uptoken","segments","ak","putPolicy","scope","bucket","getUpHosts","uphosts_url","xhr","swf_url","flash_swf_url","res","responseText","up","error","bind","getUptoken","file","uptoken_url","tokenInfo","isExpired","getNewUpToken","tokenMap","getTimestamp","time","Math","ceil","serverTime","getResponseHeader","clientTime","serverDelay","deadline","leftTime","uptoken_func","getFileKey","unique_names","save_key","getOption","settings","name","id","getDomainFromUrl","match","groups","getPortFromUrl","log_level","domain","browse_button","navigator","userAgent","option","_Error_Handler","init","Error","_FileUploaded_Handler","FileUploaded","key_handler","Key","ctx","speedCalInfo","isResumeUpload","resumeFilesize","startTime","currentTime","defaultSetting","multipart_params","accept","extend","Uploader","params","get_new_uptoken","files","auto_start","is_ios","OS","setTimeout","refresh","_start_at","speed","directUpload","multipart_params_obj","x_vars","undefined","x_key","setOption","multipart","is_android_weixin_or_qq","max_file_size","ua","runtime","size","localFileInfo","blockSize","now","before","aDay","percent","total","loaded","offset","required_features","headers","Authorization","trace","timeUsed","fileUploaded","toFixed","info","response","leftSize","retries","unknow_error_retry","QUEUED","stop","err","nowTime","errTip","FAILED","FILE_SIZE_ERROR","FILE_EXTENSION_ERROR","HTTP_ERROR","message","errorObj","errorText","e","SECURITY_ERROR","GENERIC_ERROR","IO_ERROR","INIT_ERROR","destroy","details","disable_statistics_report","matchedGroups","responseHeaders","errcode","startAt","last_step","downtoken_url","ajax_downtoken","res_downtoken","info_extended","trigger","fname","x_val","x_vars_url","ajaxInfo","getAllResponseHeaders","getUrl","encodeURI","imageView2","mode","w","h","q","format","imageUrl","imageMogr2","auto_orient","thumbnail","strip","gravity","crop","quality","rotate","blur","watermark","image","font","fontsize","fill","dissolve","dx","dy","imageInfo","exif","get","pipeline","arr","isArray","Object","errOp","fop","Qiniu"],"mappings":"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"}
\ No newline at end of file
diff --git a/package.json b/package.json
index ef7b8686..dd398d5e 100644
--- a/package.json
+++ b/package.json
@@ -33,8 +33,8 @@
"email": "jackyu@qiniu.com"
},
{
- "name": "dengchenhua",
- "email": "dengchenhua@qiniu.com"
+ "name": "jinxinxin",
+ "email": "jinxinxin@qiniu.com"
}
],
"devDependencies": {
@@ -48,7 +48,7 @@
"grunt-contrib-jshint": "~0.7.2",
"grunt-contrib-uglify": "~0.2.2",
"grunt-contrib-watch": "~0.5.3",
- "qiniu": "~6.1.1"
+ "qiniu": "~7.0.5"
},
"license": "MIT"
}
diff --git a/src/qiniu.js b/src/qiniu.js
index c85ea4ed..932c7184 100644
--- a/src/qiniu.js
+++ b/src/qiniu.js
@@ -1403,8 +1403,9 @@
}
var info_extended = {};
plupload.extend(info_extended, that.parseJSON(info.response), res_downtoken);
+ info.response = that.stringifyJSON(info_extended);
if (_FileUploaded_Handler) {
- _FileUploaded_Handler(up, file, that.stringifyJSON(info_extended));
+ _FileUploaded_Handler(up, file, info);
}
} else {
uploader.trigger('Error', {