From 8d7757692df484ff47de136b2556a4b3f37c43dd Mon Sep 17 00:00:00 2001
From: lizhiwei <550822844@qq.com>
Date: Tue, 28 Feb 2017 17:06:42 +0800
Subject: [PATCH 1/8] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8A=E4=BC=A0?=
=?UTF-8?q?=E9=80=9F=E5=BA=A6=E6=A3=80=E6=B5=8B=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 8 +-
bower.json | 13 ++-
demo/scripts/http-performance.js | 60 ++++++++++
demo/scripts/performance.js | 183 +++++++++++++++++++++++++++++++
demo/server.js | 7 ++
demo/styles/performance.css | 150 +++++++++++++++++++++++++
demo/views/formdata.html | 2 +-
demo/views/index.html | 2 +-
demo/views/multiple.html | 2 +-
demo/views/performance.html | 36 ++++++
10 files changed, 453 insertions(+), 10 deletions(-)
create mode 100644 demo/scripts/http-performance.js
create mode 100644 demo/scripts/performance.js
create mode 100644 demo/styles/performance.css
create mode 100644 demo/views/performance.html
diff --git a/README.md b/README.md
index bb112e77..8b3a1ab0 100644
--- a/README.md
+++ b/README.md
@@ -91,7 +91,7 @@ Qiniu-JavaScript-SDK 的示例 Demo 中的服务器端部分是基于[ Node.js
- 在使用 JS-SDK 之前,您必须先注册一个七牛帐号,并登录控制台获取一对有效的 AccessKey 和 SecretKey,您可以阅读[ 快速入门 ](https://developer.qiniu.com/kodo/manual/console-quickstart)和[ 安全机制 ](https://developer.qiniu.com/kodo/manual/security#security) 以进一步了解如何正确使用和管理密钥 。
- JS-SDK 依赖服务端颁发 uptoken,可以通过以下二种方式实现:
- - 利用[七牛服务端 SDK ](https://developer.qiniu.com/sdk#sdk)构建后端服务
+ - 利用[七牛服务端 SDK ](https://developer.qiniu.com/sdk#sdk)构建后端服务
- 利用七牛底层 API 构建服务,详见七牛[上传策略](https://developer.qiniu.com/kodo/manual/put-policy)和[上传凭证](https://developer.qiniu.com/kodo/manual/upload-token)
后端服务应提供一个 URL 地址,供 JS-SDK 初始化使用,前端通过 Ajax 请求该地址后获得 uptoken。Ajax 请求成功后,服务端应返回如下格式的 json:
@@ -197,7 +197,7 @@ Qiniu-JavaScript-SDK 的示例 Demo 中的服务器端部分是基于[ Node.js
// downtoken_url: '/downtoken',
// Ajax请求downToken的Url,私有空间时使用,JS-SDK 将向该地址POST文件的key和domain,服务端返回的JSON必须包含`url`字段,`url`值为该文件的下载地址
// unique_names: true, // 默认 false,key 为文件名。若开启该选项,JS-SDK 会为每个文件自动生成key(文件名)
- // save_key: true, // 默认 false。若在服务端生成 uptoken 的上传策略中指定了 `sava_key`,则开启,SDK在前端将不对key进行任何处理
+ // save_key: true, // 默认 false。若在服务端生成 uptoken 的上传策略中指定了 `save_key`,则开启,SDK在前端将不对key进行任何处理
domain: '', // bucket 域名,下载资源时用到,如:'http://xxx.bkt.clouddn.com/' **必需**
container: 'container', // 上传区域 DOM ID,默认是 browser_button 的父元素,
max_file_size: '100mb', // 最大文件体积限制
@@ -789,7 +789,7 @@ $(function() {
确认上传
-
+
暂停上传
@@ -804,7 +804,7 @@ $(function() {
确认上传
-
+
暂停上传
diff --git a/bower.json b/bower.json
index 5e891fd4..930c3780 100644
--- a/bower.json
+++ b/bower.json
@@ -1,9 +1,11 @@
{
"name": "qiniu",
"description": "Javascript SDK for Qiniu Resource (Cloud) Storage API",
- "version": "v1.0.14-beta",
+ "version": "v1.0.18",
"main": "dist/qiniu.js",
- "moduleType": ["globals"],
+ "moduleType": [
+ "globals"
+ ],
"license": "GPL V2",
"ignore": [
"**/.*",
@@ -21,6 +23,10 @@
],
"authors": "sdk@qiniu.com",
"contributors": [
+ {
+ "name": "luoyeshu0507",
+ "email": "lizhiwei@qiniu.com"
+ },
{
"name": "codedogfish",
"email": "jackyu@qiniu.com"
@@ -42,7 +48,8 @@
"bootstrap": "~3.3.6",
"highlight": "~8.9.1",
"jquery": "~1.9.1",
- "respond": "~1.4.2"
+ "respond": "~1.4.2",
+ "vue": "^2.2.1"
},
"private": false
}
diff --git a/demo/scripts/http-performance.js b/demo/scripts/http-performance.js
new file mode 100644
index 00000000..42536766
--- /dev/null
+++ b/demo/scripts/http-performance.js
@@ -0,0 +1,60 @@
+/**
+ * @license httpPerformance v1.0.0
+ * License: MIT
+ * author: luoyeshu0507
+ *
+ * @description
+ *
+ * This object provides a utility for detailing the http request performance
+ *
+ */
+;(function(window, undefined){
+ 'use strict';
+ var p = window.performance;
+ var httpPerformance = {
+ clear: function() {
+ p.clearMarks();
+ p.clearMeasures();
+ p.clearResourceTimings();
+ },
+ getAll: function() {
+ var performanceArr = [];
+ p.getEntries().forEach(function(item) {
+ performanceArr.push(httpPerformance.formatPerformance(item));
+ });
+ return performanceArr;
+ },
+ getByName: function(name) {
+ var performanceArr = [];
+ p.getEntriesByName(name).forEach(function(item) {
+ performanceArr.push(httpPerformance.formatPerformance(item));
+ });
+ return performanceArr;
+ },
+ formatPerformance: function(prt) { // PerformanceResourceTiming
+ return {
+ redirect: prt.redirectEnd - prt.redirectStart,
+ domainLookup: prt.domainLookupEnd - prt.domainLookupStart,
+ connect: prt.connectEnd - prt.connectStart,
+ request: prt.responseStart - prt.requestStart,
+ response: prt.responseEnd - prt.responseStart,
+
+ entryType: prt.entryType,
+ initiatorType: prt.initiatorType,
+ name: prt.name,
+ duration: prt.duration,
+ };
+ }
+ };
+
+ // support AMD and CMD
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = httpPerformance;
+ } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
+ define('httpPerformance', [], function () {
+ return httpPerformance;
+ });
+ } else {
+ window.httpPerformance = httpPerformance;
+ }
+})(window);
\ No newline at end of file
diff --git a/demo/scripts/performance.js b/demo/scripts/performance.js
new file mode 100644
index 00000000..4139847d
--- /dev/null
+++ b/demo/scripts/performance.js
@@ -0,0 +1,183 @@
+Vue.component('zone-list', {
+ props: ['hostMap', 'currentZone', 'switchZone', 'selectedHost'],
+ template: ''
+});
+Vue.component('upload-performance', {
+ props: ['per'],
+ template: ''
+});
+Vue.component('up-headers', {
+ props: ['headers'],
+ template: ''
+});
+Vue.filter('tofixed', function (val, size) {
+ return val.toFixed(size);
+});
+
+var app = new Vue({
+ el: '#app',
+ data: {
+ currentZone: 'z0',
+ selectedHost: {
+ host: ''
+ },
+ currentToken: '',
+ loadMessage: '',
+ hostMap: [
+ {
+ zone: 'z0',
+ zoneZh: '华东',
+ token: 'xozWSPMxkMjIVoHg2JyXq4-7-oJaEADLOKHVR0vU:hzD116IsDOpb4gjzyPg7ngg4Qjs=:eyJzY29wZSI6Impzc2RrOmEuanBnIiwiZGVhZGxpbmUiOjIxMTQzODA4MDAwMDAsImZzaXplTGltaXQiOjEwMDAwMDB9',
+ uphosts: [
+ 'http://up.qiniu.com',
+ 'http://upload.qiniu.com',
+ 'https://up.qbox.me',
+ 'https://upload.qbox.me'
+ ]
+ },
+ {
+ zone: 'z1',
+ zoneZh: '华北',
+ token: 'xozWSPMxkMjIVoHg2JyXq4-7-oJaEADLOKHVR0vU:9RFuA13c6pp-O2aIOe1UfTI3rlo=:eyJzY29wZSI6Impzc2RrLXoxOmEuanBnIiwiZGVhZGxpbmUiOjIxMTQzODA4MDAwMDAsImZzaXplTGltaXQiOjEwMDAwMDB9',
+ uphosts: [
+ 'http://up-z1.qiniu.com',
+ 'http://upload-z1.qiniu.com',
+ 'https://up-z1.qbox.me',
+ 'https://upload-z1.qbox.me'
+ ]
+ },
+ {
+ zone: 'z2',
+ zoneZh: '华南',
+ token: 'xozWSPMxkMjIVoHg2JyXq4-7-oJaEADLOKHVR0vU:qmDBxiYviu0tg2hZzCFHjCZM3-w=:eyJzY29wZSI6Impzc2RrLXoyOmEuanBnIiwiZGVhZGxpbmUiOjIxMTQzODA4MDAwMDAsImZzaXplTGltaXQiOjEwMDAwMDB9',
+ uphosts: [
+ 'http://up-z2.qiniu.com',
+ 'http://upload-z2.qiniu.com',
+ 'https://up-z2.qbox.me',
+ 'https://upload-z2.qbox.me'
+ ]
+ },
+ {
+ zone: 'na0',
+ zoneZh: '北美',
+ token: 'xozWSPMxkMjIVoHg2JyXq4-7-oJaEADLOKHVR0vU:DMPzTGGhX3HY0ph99YfAK_y-0XM=:eyJzY29wZSI6Impzc2RrLW5hMDphLmpwZyIsImRlYWRsaW5lIjoyMTE0MzgwODAwMDAwLCJmc2l6ZUxpbWl0IjoxMDAwMDAwfQ==',
+ uphosts: [
+ 'http://up-na0.qiniu.com',
+ 'http://upload-na0.qiniu.com',
+ 'https://up-na0.qbox.me',
+ 'https://upload-na0.qbox.me'
+ ]
+ },
+ ],
+ isPerformanceSupported: true,
+ performance: null,
+ headers: null
+ },
+ methods: {
+ renderHtml: function() {},
+ post: function(opt) {
+ var xmlHttp = new XMLHttpRequest();
+ xmlHttp.open('POST', opt.url, true);
+ xmlHttp.setRequestHeader('Performance-Page', 'true');
+ xmlHttp.onreadystatechange = function () {
+ if (xmlHttp.readyState == 4) {
+ if (xmlHttp.status == 200) {
+ opt.success(xmlHttp);
+ } else {
+ opt.error(xmlHttp.responseText);
+ }
+ }
+ };
+ xmlHttp.upload.onprogress = opt.progress;
+ xmlHttp.send(opt.data);
+ },
+ uploadTest: function() {
+ if(!this.selectedHost.host) return;
+ this.resetResult();
+ var self = this;
+ this.post({
+ url: this.selectedHost.host,
+ data: this.mockDate(),
+ progress: function(e) {
+ if (e.lengthComputable) {
+ var percent = e.loaded/e.total*100;
+ self.loadMessage = '模拟数据上传:' + e.loaded + " / " + e.total+" bytes 完成:" + percent.toFixed(2) + "%";
+ }
+ },
+ success: function(xhr) {
+ self.formateHeader(xhr.getAllResponseHeaders());
+ self.getPerformance();
+ },
+ error: function(res) {
+ self.loadMessage = '上传失败:' + res;
+ }
+ });
+ },
+ mockDate: function(size) {
+ var f = new FormData(document.getElementById("testform"));
+ f.append('file', this.dataURLtoBlob(this.randomBase64(size)));
+ f.append('token', this.currentToken);
+ return f;
+ },
+ randomBase64: function() {
+ var dataurl = 'data:image/jpeg;base64,';
+ var len = parseInt(Math.random()*(1330000-1100000+1)+1100000, 10);
+ while (dataurl.length < len) {
+ dataurl += Math.random > 0.5 ? '/9j/4AAQSkZJRgABAQAASABIAAD/4Q' : '/9j/4AAQSkZJRgABAQAASABIAAD/4W';
+ }
+ return dataurl;
+ },
+ dataURLtoBlob: function(dataurl) {
+ var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
+ bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
+ while(n--){
+ u8arr[n] = bstr.charCodeAt(n);
+ }
+ return new Blob([u8arr], {type:mime});
+ },
+ resetResult: function() {
+ for (var i = 0; i < this.hostMap.length; i++) {
+ if (this.hostMap[i].zone === this.currentZone) {
+ this.currentToken = this.hostMap[i].token;
+ break;
+ }
+ }
+ this.performance = null;
+ this.headers = null;
+ },
+ switchZone: function(zone) {
+ this.currentZone = zone;
+ this.selectedHost.host = '';
+ },
+ getPerformance: function() {
+ var per = httpPerformance.getByName(this.selectedHost.host + '/');
+ this.performance = per[1] || per[0]; // 跨域有时候会先发送一个 option 请求,并不是真的上传请求。
+ },
+ formateHeader: function(headers) {
+ var list = [];
+ headers.match(/.+/mg).map(function(item) {
+ var index = item.indexOf(':');
+ var o = {
+ key: item.substr(0, index),
+ val: item.substr(index + 1)
+ };
+ list.push(o);
+ });
+ this.headers = list;
+ }
+ },
+ created: function() {
+ this.isPerformanceSupported = !!(window.performance && window.performance.getEntries);
+ }
+});
+
+
diff --git a/demo/server.js b/demo/server.js
index e36076fc..1beb8a01 100644
--- a/demo/server.js
+++ b/demo/server.js
@@ -83,6 +83,13 @@ app.get('/formdata', function(req, res) {
});
});
+app.get('/performance', function(req, res) {
+ var token = uptoken.token();
+ res.render('performance.html', {
+ uptoken: token
+ });
+});
+
qiniu.conf.ACCESS_KEY = config.ACCESS_KEY;
qiniu.conf.SECRET_KEY = config.SECRET_KEY;
diff --git a/demo/styles/performance.css b/demo/styles/performance.css
new file mode 100644
index 00000000..8de42543
--- /dev/null
+++ b/demo/styles/performance.css
@@ -0,0 +1,150 @@
+#testform{
+ display: none;
+}
+body{
+ padding: 0;
+ margin:0;
+ font-family: core, "Avenir Next", "Helvetica Neue", Helvetica, Arial, "Source Han Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi MicroHei", sans-serif;
+ color: #666;
+ font-size: 14px;
+ background: url('http://assets.qiniu.com/v2/qiniu-blue-195x105.png') no-repeat #1DA4DE;
+}
+ul,li {
+ padding: 0;
+ margin: 0;
+}
+td, th{
+ border: 0 none;
+ border-bottom: 1px solid #f0f0f0;
+}
+.hidden{
+ display: none;
+}
+.show {
+ display: inherit;
+}
+.title{
+ background-color: #0983C7;
+ line-height: 40px;
+ text-align: center;
+ color:#fff;
+}
+.container{
+ width: 100%;
+ margin:0 auto;
+ max-width:640px;
+ background-color: #fff;
+ border-radius: 10px;
+ min-height: 530px;
+ overflow: hidden;
+ padding-bottom: 30px;
+}
+.uploaded-result{
+ line-height: 30px;
+ margin: 0 20px;
+}
+.uploaded-result th{
+ text-align: left;
+}
+.uploaded-result table {
+ width: 100%;
+ word-break: break-all;
+}
+#canvas{
+ display:none;
+}
+.progress{
+ padding: 20px 20px;
+ color: #108ee9;
+ line-height: 26px;
+}
+.low-browser{
+ padding: 30px 20px;
+}
+.run{
+ display: block;
+ width: 120px;
+ line-height: 26px;
+ background-color: #1992ea;
+ border-radius: 6px;
+ margin: 20px auto;
+ text-align: center;
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+ font-size: 14px;
+}
+.run:hover{
+ background-color: #1DA4DE;
+}
+.disabled, .disabled:hover{
+ background-color: #aaa;
+}
+.uphosts-list li{
+ list-style: none;
+ font-size: 14px;
+}
+.uphosts-list ul:first-of-type{
+ text-align: center;
+ height: 27px;
+ line-height: 26px;
+ margin: 20px;
+ border-bottom: 1px solid #d9d9d9;
+}
+.uphosts-list ul:first-of-type li{
+ float: left;
+ width: 50px;
+ margin: 0 10px;
+ cursor: pointer;
+}
+.uphosts-list ul:first-of-type li.on{
+ color: #108ee9;
+ border-bottom: 2px solid #108ee9;
+}
+.uphosts-list ul:last-child{
+ margin: 20px;
+}
+.uphosts-list ul:last-child li{
+ display: none;
+}
+.uphosts-list ul:last-child li.on{
+ display: block;
+}
+.uphosts-list ul:last-child li label{
+ display: inline-block;
+ width: 50%;
+ padding: 6px 0;
+ cursor: pointer;
+}
+.up-performance{
+ margin-bottom: 20px;
+}
+.per-title{
+ font-weight: bold;
+ color: #108ee9;
+}
+.up-headers{
+
+}
+.up-headers tr td:first-child{
+ width: 120px;
+}
+@media screen and (min-width: 640px){
+ .container{
+ margin-top:50px;
+ }
+}
+@media screen and (max-width: 640px){
+ body{
+ background-color:#fff;
+ }
+ .uphosts-list ul:last-child li label{
+ width: 100%;
+ }
+ .container{
+ border-radius: 0;
+ }
+}
+
+
+
diff --git a/demo/views/formdata.html b/demo/views/formdata.html
index fbd5af24..f4b7e153 100644
--- a/demo/views/formdata.html
+++ b/demo/views/formdata.html
@@ -3,7 +3,7 @@
- formdata 上传 demo
+ 七牛云 - formdata 上传 demo
diff --git a/demo/views/index.html b/demo/views/index.html
index 769990d4..775e48da 100644
--- a/demo/views/index.html
+++ b/demo/views/index.html
@@ -2,7 +2,7 @@
- 七牛云存储 - JavaScript SDK
+ 七牛云 - JavaScript SDK
diff --git a/demo/views/multiple.html b/demo/views/multiple.html
index c4e78ab7..04988c19 100644
--- a/demo/views/multiple.html
+++ b/demo/views/multiple.html
@@ -2,7 +2,7 @@
- 七牛云存储 - JavaScript SDK
+ 七牛云 - JavaScript SDK
diff --git a/demo/views/performance.html b/demo/views/performance.html
new file mode 100644
index 00000000..2d1ca884
--- /dev/null
+++ b/demo/views/performance.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ 七牛云 - 上传速度检测
+
+
+
+
七牛云上传速度检测
+
+
+
+
您好,您的浏览器版本过低,请使用谷歌、火狐、Opera、IE9+等高级浏览器...
+
+
+
+
+
开始检测
+
+
{{loadMessage}}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From cf7cab5aae71bf1fadd72bdb12680fb8a7ed9734 Mon Sep 17 00:00:00 2001
From: lizhiwei <550822844@qq.com>
Date: Mon, 13 Mar 2017 18:25:49 +0800
Subject: [PATCH 2/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E8=AE=BE=E7=BD=AEget?=
=?UTF-8?q?=5Fnew=5Fuptoken=E4=B8=BAtrue=E6=97=B6=20=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=E9=9D=9E=E5=8D=8E=E4=B8=9C=E6=9C=BA=E6=88=BF=E7=9A=84=E7=A9=BA?=
=?UTF-8?q?=E9=97=B4=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/qiniu.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/qiniu.js b/src/qiniu.js
index be64e414..cace4f80 100644
--- a/src/qiniu.js
+++ b/src/qiniu.js
@@ -624,7 +624,7 @@ function QiniuJsSDK() {
}else{
ajax = that.createAjax();
}
- ajax.open('GET', uphosts_url, true);
+ ajax.open('GET', uphosts_url, false);
var onreadystatechange = function(){
logger.debug("ajax.readyState: ", ajax.readyState);
if (ajax.readyState === 4) {
@@ -1393,7 +1393,7 @@ function QiniuJsSDK() {
* @return {String} url of processed image
*/
this.imageView2 = function(op, key) {
-
+
if (!/^\d$/.test(op.mode)) {
return false;
}
From 199055a203ac695293a2bc5c7b11bed206b33e9c Mon Sep 17 00:00:00 2001
From: lizhiwei <550822844@qq.com>
Date: Wed, 15 Mar 2017 15:27:33 +0800
Subject: [PATCH 3/8] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=B8=8A=E4=BC=A0?=
=?UTF-8?q?=E6=A3=80=E6=B5=8B=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
demo/scripts/http-performance.js | 2 +-
demo/scripts/performance.js | 9 +++++++--
demo/server.js | 1 +
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/demo/scripts/http-performance.js b/demo/scripts/http-performance.js
index 42536766..823ee97c 100644
--- a/demo/scripts/http-performance.js
+++ b/demo/scripts/http-performance.js
@@ -57,4 +57,4 @@
} else {
window.httpPerformance = httpPerformance;
}
-})(window);
\ No newline at end of file
+})(window);
diff --git a/demo/scripts/performance.js b/demo/scripts/performance.js
index 4139847d..b1b4d9df 100644
--- a/demo/scripts/performance.js
+++ b/demo/scripts/performance.js
@@ -17,7 +17,7 @@ Vue.component('upload-performance', {
});
Vue.component('up-headers', {
props: ['headers'],
- template: ''
+ template: ''
});
Vue.filter('tofixed', function (val, size) {
return val.toFixed(size);
@@ -87,7 +87,7 @@ var app = new Vue({
post: function(opt) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('POST', opt.url, true);
- xmlHttp.setRequestHeader('Performance-Page', 'true');
+ xmlHttp.setRequestHeader('X-Qiniu-Performance', 'true');
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
@@ -160,6 +160,11 @@ var app = new Vue({
},
getPerformance: function() {
var per = httpPerformance.getByName(this.selectedHost.host + '/');
+ if(per.length == 2) {
+ per[1].redirect = per[0].redirect;
+ per[1].domainLookup = per[0].domainLookup;
+ per[1].connect = per[0].connect;
+ }
this.performance = per[1] || per[0]; // 跨域有时候会先发送一个 option 请求,并不是真的上传请求。
},
formateHeader: function(headers) {
diff --git a/demo/server.js b/demo/server.js
index 1beb8a01..6e8d46e6 100644
--- a/demo/server.js
+++ b/demo/server.js
@@ -102,5 +102,6 @@ app.listen(config.Port, function() {
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');
});
From 6075d094ccfd54260b0a2801edbc0d98d503351e Mon Sep 17 00:00:00 2001
From: lizhiwei <550822844@qq.com>
Date: Wed, 15 Mar 2017 15:31:08 +0800
Subject: [PATCH 4/8] modify version
---
bower.json | 2 +-
package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/bower.json b/bower.json
index 930c3780..351f7951 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.18",
+ "version": "v1.0.19",
"main": "dist/qiniu.js",
"moduleType": [
"globals"
diff --git a/package.json b/package.json
index a4281c79..ee4a26e6 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "qiniu-js",
"jsName": "qiniu",
- "version": "1.0.18",
+ "version": "1.0.19",
"private": false,
"scripts": {
"start": "node demo/server.js"
From 02023165e62e1fb1c89e862eb1109edcc4d0f511 Mon Sep 17 00:00:00 2001
From: lizhiwei <550822844@qq.com>
Date: Wed, 15 Mar 2017 15:46:11 +0800
Subject: [PATCH 5/8] build
---
dist/qiniu.js | 8 ++++----
dist/qiniu.min.js | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/dist/qiniu.js b/dist/qiniu.js
index 24f5fa84..e1d80559 100644
--- a/dist/qiniu.js
+++ b/dist/qiniu.js
@@ -1,12 +1,12 @@
/*!
- * qiniu-js-sdk v1.0.18
+ * qiniu-js-sdk v1.0.19
*
* Copyright 2015 by Qiniu
* Released under GPL V2 License.
*
* GitHub: http://github.com/qiniu/js-sdk
*
- * Date: 2017-2-6
+ * Date: 2017-3-15
*/
/*global plupload ,mOxie*/
@@ -624,7 +624,7 @@ function QiniuJsSDK() {
}else{
ajax = that.createAjax();
}
- ajax.open('GET', uphosts_url, true);
+ ajax.open('GET', uphosts_url, false);
var onreadystatechange = function(){
logger.debug("ajax.readyState: ", ajax.readyState);
if (ajax.readyState === 4) {
@@ -1393,7 +1393,7 @@ function QiniuJsSDK() {
* @return {String} url of processed image
*/
this.imageView2 = function(op, key) {
-
+
if (!/^\d$/.test(op.mode)) {
return false;
}
diff --git a/dist/qiniu.min.js b/dist/qiniu.min.js
index 65434a5e..15b65081 100644
--- a/dist/qiniu.min.js
+++ b/dist/qiniu.min.js
@@ -1,3 +1,3 @@
-/*! qiniu-js v1.0.18 | 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;this.resetUploadUrl=function(){var a="https:"===window.location.protocol?qiniuUpHosts.https:qiniuUpHosts.http;var b=changeUrlTimes%a.length;qiniuUploadUrl=a[b],changeUrlTimes++,logger.debug("resetUploadUrl: "+qiniuUploadUrl)},this.isImage=function(a){return a=a.split(/[?#]/)[0],/\.(png|jpg|jpeg|gif|bmp)$/i.test(a)},this.getFileExtension=function(a){var b=a.split(".");var c;return c=1===b.length||""===b[0]&&2===b.length?"":b.pop().toLowerCase()},this.utf8_encode=function(a){if(null===a||"undefined"==typeof a)return"";var b=a+"";var c="",d,e,f=0;d=e=0,f=b.length;for(var g=0;f>g;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.Env.browser&&mOxie.Env.version<=5&&"Windows"===mOxie.Env.os&&"7"===mOxie.Env.osVersion||"Safari"===mOxie.Env.browser&&"iOS"===mOxie.Env.os&&"7"===mOxie.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=[];for(var c=0;c=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.XMLHttpRequest,mOxie.Env.swf_url=a.flash_swf_url):h=that.createAjax(),h.open("GET",f,!0);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,!1),c.setRequestHeader("If-Modified-Since","0"),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};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.Env),logger.debug("userAgent: ",navigator.userAgent);var i={};var j=a.init&&a.init.Error;var k=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 l="";var m={isResumeUpload:!1,resumeFilesize:0,startTime:"",currentTime:""};b(),logger.debug("invoke reset_chunk_size()"),logger.debug("op.chunk_size: ",a.chunk_size);var n={url:qiniuUploadUrl,multipart_params:{token:""}};var o=that.detectIEVersion();o&&9>=o&&(n.multipart_params.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),plupload.extend(i,a,n),logger.debug("option: ",i);var p=new plupload.Uploader(i);logger.debug("new plupload.Uploader(option)"),p.bind("Init",function(b,c){logger.debug("Init event activated"),a.get_new_uptoken||g(null)}),logger.debug("bind Init event"),p.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.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.Env.browser||a.match(/V1_AND_SQ/i))&&"android"===mOxie.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: ",p.runtime),logger.debug("chunk_size: ",i),"html5"!==p.runtime&&"flash"!==p.runtime||!i)logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"),d(b,c,that.key_handler);else if(c.sizen-o&&100!==j.percent&&c.size===j.total?(c.percent=j.percent,c.loaded=j.offset,l=j.ctx,m.isResumeUpload=!0,m.resumeFilesize=j.offset,j.offset+k>c.size&&(k=c.size-j.offset)):localStorage.removeItem(c.name)}m.startTime=(new Date).getTime();var r={};var s=that.detectIEVersion();s&&9>=s&&(r.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:r})}}),logger.debug("bind BeforeUpload event"),p.bind("UploadProgress",function(a,b){logger.trace("UploadProgress event activated"),m.currentTime=(new Date).getTime();var c=m.currentTime-m.startTime;var d=b.loaded||0;m.isResumeUpload&&(d=b.loaded-m.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),logger.debug("bind UploadProgress event"),p.bind("ChunkUploaded",function(a,b,c){logger.debug("ChunkUploaded event activated"),logger.debug("file: ",b),logger.debug("info: ",c);var d=that.parseJSON(c.response);logger.debug("res: ",d),l=l?l+","+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:l,percent:b.percent,total:c.total,offset:c.offset,time:(new Date).getTime()}))}),logger.debug("bind ChunkUploaded event");var q=qiniuUploadUrls.length;var r=function(a){return q-->0?(setTimeout(function(){that.resetUploadUrl(),a.status=plupload.QUEUED,p.stop(),p.start()},0),!0):(q=qiniuUploadUrls.length,!1)};return p.bind("Error",function(a){return function(b,c){logger.error("Error event activated"),logger.error("err: ",c);var d="";var e=c.file;if(e){switch(c.code){case plupload.FAILED:d="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.FILE_SIZE_ERROR:var f=b.getOption&&b.getOption("max_file_size");f=f||b.settings&&b.settings.max_file_size,d="\u6d4f\u89c8\u5668\u6700\u5927\u53ef\u4e0a\u4f20"+f+"\u3002\u66f4\u5927\u6587\u4ef6\u8bf7\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u3002";break;case plupload.FILE_EXTENSION_ERROR:d="\u6587\u4ef6\u9a8c\u8bc1\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002";break;case plupload.HTTP_ERROR:if(""===c.response){if(d=c.message||"\u672a\u77e5\u7f51\u7edc\u9519\u8bef\u3002",!r(e))return;break}var g=that.parseJSON(c.response);var h=g.error;switch(c.status){case 400:d="\u8bf7\u6c42\u62a5\u6587\u683c\u5f0f\u9519\u8bef\u3002";break;case 401:d="\u5ba2\u6237\u7aef\u8ba4\u8bc1\u6388\u6743\u5931\u8d25\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 405:d="\u5ba2\u6237\u7aef\u8bf7\u6c42\u9519\u8bef\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 579:d="\u8d44\u6e90\u4e0a\u4f20\u6210\u529f\uff0c\u4f46\u56de\u8c03\u5931\u8d25\u3002";break;case 599:if(d="\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002",!r(e))return;break;case 614:d="\u6587\u4ef6\u5df2\u5b58\u5728\u3002";try{g=that.parseJSON(g.error),h=g.error||"file exists"}catch(i){h=g.error||"file exists"}break;case 631:d="\u6307\u5b9a\u7a7a\u95f4\u4e0d\u5b58\u5728\u3002";break;case 701:d="\u4e0a\u4f20\u6570\u636e\u5757\u6821\u9a8c\u51fa\u9519\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;default:if(d="\u672a\u77e5\u9519\u8bef\u3002",!r(e))return}d=d+"("+c.status+"\uff1a"+h+")";break;case plupload.SECURITY_ERROR:d="\u5b89\u5168\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002";break;case plupload.GENERIC_ERROR:d="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.IO_ERROR:d="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.INIT_ERROR:d="\u7f51\u7ad9\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002",p.destroy();break;default:if(d=c.message+c.details,!r(e))return}a&&a(b,c,d)}b.refresh()}}(j)),logger.debug("bind Error event"),p.bind("FileUploaded",function(b){return function(c,d,e){logger.debug("FileUploaded event activated"),logger.debug("file: ",d),logger.debug("info: ",e);var f=function(c,d,e){if(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),a),b&&b(c,d,that.stringifyJSON(h))}else p.trigger("Error",{status:f.status,response:f.responseText,file:d,code:plupload.HTTP_ERROR})},f.send("key="+that.parseJSON(e).key+"&domain="+a.domain)}else b&&b(c,d,e)};var g=that.parseJSON(e.response);if(l=l?l:g.ctx,logger.debug("ctx: ",l),l){var i="";logger.debug("save_key: ",a.save_key),a.save_key||(i=h(c,d,that.key_handler),i=i?"/key/"+that.URLSafeBase64Encode(i):"");var j="/fname/"+that.URLSafeBase64Encode(d.name);logger.debug("op.x_vars: ",a.x_vars);var k=a.x_vars,m="",n="";if(void 0!==k&&"object"==typeof k)for(var o in k)k.hasOwnProperty(o)&&("function"==typeof k[o]?m=that.URLSafeBase64Encode(k[o](c,d)):"object"!=typeof k[o]&&(m=that.URLSafeBase64Encode(k[o])),n+="/x:"+o+"/"+m);var q=qiniuUploadUrl+"/mkfile/"+d.size+i+j+n;var r=that.detectIEVersion();var s;r&&9>=r?(s=new mOxie.XMLHttpRequest,mOxie.Env.swf_url=a.flash_swf_url):s=that.createAjax(),s.open("POST",q,!0),s.setRequestHeader("Content-Type","text/plain;charset=UTF-8"),s.setRequestHeader("Authorization","UpToken "+that.token);var t=function(){if(logger.debug("ajax.readyState: ",s.readyState),4===s.readyState){localStorage.removeItem(d.name);var a;200===s.status?(a=s.responseText,logger.debug("mkfile is success: ",a),f(c,d,a)):(a={status:s.status,response:s.responseText,file:d,code:-200,responseHeaders:s.getAllResponseHeaders()},logger.debug("mkfile is error: ",a),p.trigger("Error",a))}};r&&9>=r?s.bind("readystatechange",t):s.onreadystatechange=t,s.send(l),logger.debug("mkfile: ",q)}else f(c,d,e.response)}}(k)),logger.debug("bind FileUploaded event"),p.init(),logger.debug("invoke uploader.init()"),logger.debug("init uploader end"),p},this.getUrl=function(a){if(!a)return!1;a=encodeURI(a);var b=this.domain;return"/"!==b.slice(b.length-1)&&(b+="/"),b+a},this.imageView2=function(a,b){if(!/^\d$/.test(a.mode))return!1;var c=a.mode,d=a.w||"",e=a.h||"",f=a.q||"",g=a.format||"";if(!d&&!e)return!1;var h="imageView2/"+c;return h+=d?"/w/"+d:"",h+=e?"/h/"+e:"",h+=f?"/q/"+f:"",h+=g?"/format/"+g:"",b&&(h=this.getUrl(b)+"?"+h),h},this.imageMogr2=function(a,b){var c=a["auto-orient"]||"",d=a.thumbnail||"",e=a.strip||"",f=a.gravity||"",g=a.crop||"",h=a.quality||"",i=a.rotate||"",j=a.format||"",k=a.blur||"";var l="imageMogr2";return l+=c?"/auto-orient":"",l+=d?"/thumbnail/"+d:"",l+=e?"/strip":"",l+=f?"/gravity/"+f:"",l+=h?"/quality/"+h:"",l+=g?"/crop/"+g:"",l+=i?"/rotate/"+i:"",l+=j?"/format/"+j:"",l+=k?"/blur/"+k:"",b&&(l=this.getUrl(b)+"?"+l),l},this.watermark=function(a,b){var c=a.mode;if(!c)return!1;var d="watermark/"+c;if(1===c){var e=a.image||"";if(!e)return!1;d+=e?"/image/"+this.URLSafeBase64Encode(e):""}else{if(2!==c)return!1;var f=a.text?a.text:"",g=a.font?a.font:"",h=a.fontsize?a.fontsize:"",i=a.fill?a.fill:"";if(!f)return!1;d+=f?"/text/"+this.URLSafeBase64Encode(f):"",d+=g?"/font/"+this.URLSafeBase64Encode(g):"",d+=h?"/fontsize/"+h:"",d+=i?"/fill/"+this.URLSafeBase64Encode(i):""}var j=a.dissolve||"",k=a.gravity||"",l=a.dx||"",m=a.dy||"";return d+=j?"/dissolve/"+j:"",d+=k?"/gravity/"+k:"",d+=l?"/dx/"+l:"",d+=m?"/dy/"+m:"",b&&(d=this.getUrl(b)+"?"+d),d},this.imageInfo=function(a){if(!a)return!1;var b=this.getUrl(a)+"?imageInfo";var c=this.createAjax();var d;var e=this;return c.open("GET",b,!1),c.onreadystatechange=function(){4===c.readyState&&200===c.status&&(d=e.parseJSON(c.responseText))},c.send(),d},this.exif=function(a){if(!a)return!1;var b=this.getUrl(a)+"?exif";var c=this.createAjax();var d;var e=this;return c.open("GET",b,!1),c.onreadystatechange=function(){4===c.readyState&&200===c.status&&(d=e.parseJSON(c.responseText))},c.send(),d},this.get=function(a,b){return b&&a?"exif"===a?this.exif(b):"imageInfo"===a?this.imageInfo(b):!1:!1},this.pipeline=function(a,b){var c="[object Array]"===Object.prototype.toString.call(a);var d,e,f="";if(c){for(var g=0,h=a.length;h>g;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);
+/*! qiniu-js v1.0.19 | 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;this.resetUploadUrl=function(){var a="https:"===window.location.protocol?qiniuUpHosts.https:qiniuUpHosts.http;var b=changeUrlTimes%a.length;qiniuUploadUrl=a[b],changeUrlTimes++,logger.debug("resetUploadUrl: "+qiniuUploadUrl)},this.isImage=function(a){return a=a.split(/[?#]/)[0],/\.(png|jpg|jpeg|gif|bmp)$/i.test(a)},this.getFileExtension=function(a){var b=a.split(".");var c;return c=1===b.length||""===b[0]&&2===b.length?"":b.pop().toLowerCase()},this.utf8_encode=function(a){if(null===a||"undefined"==typeof a)return"";var b=a+"";var c="",d,e,f=0;d=e=0,f=b.length;for(var g=0;f>g;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.Env.browser&&mOxie.Env.version<=5&&"Windows"===mOxie.Env.os&&"7"===mOxie.Env.osVersion||"Safari"===mOxie.Env.browser&&"iOS"===mOxie.Env.os&&"7"===mOxie.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=[];for(var c=0;c=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.XMLHttpRequest,mOxie.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,!1),c.setRequestHeader("If-Modified-Since","0"),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};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.Env),logger.debug("userAgent: ",navigator.userAgent);var i={};var j=a.init&&a.init.Error;var k=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 l="";var m={isResumeUpload:!1,resumeFilesize:0,startTime:"",currentTime:""};b(),logger.debug("invoke reset_chunk_size()"),logger.debug("op.chunk_size: ",a.chunk_size);var n={url:qiniuUploadUrl,multipart_params:{token:""}};var o=that.detectIEVersion();o&&9>=o&&(n.multipart_params.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),plupload.extend(i,a,n),logger.debug("option: ",i);var p=new plupload.Uploader(i);logger.debug("new plupload.Uploader(option)"),p.bind("Init",function(b,c){logger.debug("Init event activated"),a.get_new_uptoken||g(null)}),logger.debug("bind Init event"),p.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.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.Env.browser||a.match(/V1_AND_SQ/i))&&"android"===mOxie.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: ",p.runtime),logger.debug("chunk_size: ",i),"html5"!==p.runtime&&"flash"!==p.runtime||!i)logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"),d(b,c,that.key_handler);else if(c.sizen-o&&100!==j.percent&&c.size===j.total?(c.percent=j.percent,c.loaded=j.offset,l=j.ctx,m.isResumeUpload=!0,m.resumeFilesize=j.offset,j.offset+k>c.size&&(k=c.size-j.offset)):localStorage.removeItem(c.name)}m.startTime=(new Date).getTime();var r={};var s=that.detectIEVersion();s&&9>=s&&(r.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:r})}}),logger.debug("bind BeforeUpload event"),p.bind("UploadProgress",function(a,b){logger.trace("UploadProgress event activated"),m.currentTime=(new Date).getTime();var c=m.currentTime-m.startTime;var d=b.loaded||0;m.isResumeUpload&&(d=b.loaded-m.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),logger.debug("bind UploadProgress event"),p.bind("ChunkUploaded",function(a,b,c){logger.debug("ChunkUploaded event activated"),logger.debug("file: ",b),logger.debug("info: ",c);var d=that.parseJSON(c.response);logger.debug("res: ",d),l=l?l+","+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:l,percent:b.percent,total:c.total,offset:c.offset,time:(new Date).getTime()}))}),logger.debug("bind ChunkUploaded event");var q=qiniuUploadUrls.length;var r=function(a){return q-->0?(setTimeout(function(){that.resetUploadUrl(),a.status=plupload.QUEUED,p.stop(),p.start()},0),!0):(q=qiniuUploadUrls.length,!1)};return p.bind("Error",function(a){return function(b,c){logger.error("Error event activated"),logger.error("err: ",c);var d="";var e=c.file;if(e){switch(c.code){case plupload.FAILED:d="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.FILE_SIZE_ERROR:var f=b.getOption&&b.getOption("max_file_size");f=f||b.settings&&b.settings.max_file_size,d="\u6d4f\u89c8\u5668\u6700\u5927\u53ef\u4e0a\u4f20"+f+"\u3002\u66f4\u5927\u6587\u4ef6\u8bf7\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u3002";break;case plupload.FILE_EXTENSION_ERROR:d="\u6587\u4ef6\u9a8c\u8bc1\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002";break;case plupload.HTTP_ERROR:if(""===c.response){if(d=c.message||"\u672a\u77e5\u7f51\u7edc\u9519\u8bef\u3002",!r(e))return;break}var g=that.parseJSON(c.response);var h=g.error;switch(c.status){case 400:d="\u8bf7\u6c42\u62a5\u6587\u683c\u5f0f\u9519\u8bef\u3002";break;case 401:d="\u5ba2\u6237\u7aef\u8ba4\u8bc1\u6388\u6743\u5931\u8d25\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 405:d="\u5ba2\u6237\u7aef\u8bf7\u6c42\u9519\u8bef\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 579:d="\u8d44\u6e90\u4e0a\u4f20\u6210\u529f\uff0c\u4f46\u56de\u8c03\u5931\u8d25\u3002";break;case 599:if(d="\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002",!r(e))return;break;case 614:d="\u6587\u4ef6\u5df2\u5b58\u5728\u3002";try{g=that.parseJSON(g.error),h=g.error||"file exists"}catch(i){h=g.error||"file exists"}break;case 631:d="\u6307\u5b9a\u7a7a\u95f4\u4e0d\u5b58\u5728\u3002";break;case 701:d="\u4e0a\u4f20\u6570\u636e\u5757\u6821\u9a8c\u51fa\u9519\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;default:if(d="\u672a\u77e5\u9519\u8bef\u3002",!r(e))return}d=d+"("+c.status+"\uff1a"+h+")";break;case plupload.SECURITY_ERROR:d="\u5b89\u5168\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002";break;case plupload.GENERIC_ERROR:d="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.IO_ERROR:d="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.INIT_ERROR:d="\u7f51\u7ad9\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002",p.destroy();break;default:if(d=c.message+c.details,!r(e))return}a&&a(b,c,d)}b.refresh()}}(j)),logger.debug("bind Error event"),p.bind("FileUploaded",function(b){return function(c,d,e){logger.debug("FileUploaded event activated"),logger.debug("file: ",d),logger.debug("info: ",e);var f=function(c,d,e){if(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),a),b&&b(c,d,that.stringifyJSON(h))}else p.trigger("Error",{status:f.status,response:f.responseText,file:d,code:plupload.HTTP_ERROR})},f.send("key="+that.parseJSON(e).key+"&domain="+a.domain)}else b&&b(c,d,e)};var g=that.parseJSON(e.response);if(l=l?l:g.ctx,logger.debug("ctx: ",l),l){var i="";logger.debug("save_key: ",a.save_key),a.save_key||(i=h(c,d,that.key_handler),i=i?"/key/"+that.URLSafeBase64Encode(i):"");var j="/fname/"+that.URLSafeBase64Encode(d.name);logger.debug("op.x_vars: ",a.x_vars);var k=a.x_vars,m="",n="";if(void 0!==k&&"object"==typeof k)for(var o in k)k.hasOwnProperty(o)&&("function"==typeof k[o]?m=that.URLSafeBase64Encode(k[o](c,d)):"object"!=typeof k[o]&&(m=that.URLSafeBase64Encode(k[o])),n+="/x:"+o+"/"+m);var q=qiniuUploadUrl+"/mkfile/"+d.size+i+j+n;var r=that.detectIEVersion();var s;r&&9>=r?(s=new mOxie.XMLHttpRequest,mOxie.Env.swf_url=a.flash_swf_url):s=that.createAjax(),s.open("POST",q,!0),s.setRequestHeader("Content-Type","text/plain;charset=UTF-8"),s.setRequestHeader("Authorization","UpToken "+that.token);var t=function(){if(logger.debug("ajax.readyState: ",s.readyState),4===s.readyState){localStorage.removeItem(d.name);var a;200===s.status?(a=s.responseText,logger.debug("mkfile is success: ",a),f(c,d,a)):(a={status:s.status,response:s.responseText,file:d,code:-200,responseHeaders:s.getAllResponseHeaders()},logger.debug("mkfile is error: ",a),p.trigger("Error",a))}};r&&9>=r?s.bind("readystatechange",t):s.onreadystatechange=t,s.send(l),logger.debug("mkfile: ",q)}else f(c,d,e.response)}}(k)),logger.debug("bind FileUploaded event"),p.init(),logger.debug("invoke uploader.init()"),logger.debug("init uploader end"),p},this.getUrl=function(a){if(!a)return!1;a=encodeURI(a);var b=this.domain;return"/"!==b.slice(b.length-1)&&(b+="/"),b+a},this.imageView2=function(a,b){if(!/^\d$/.test(a.mode))return!1;var c=a.mode,d=a.w||"",e=a.h||"",f=a.q||"",g=a.format||"";if(!d&&!e)return!1;var h="imageView2/"+c;return h+=d?"/w/"+d:"",h+=e?"/h/"+e:"",h+=f?"/q/"+f:"",h+=g?"/format/"+g:"",b&&(h=this.getUrl(b)+"?"+h),h},this.imageMogr2=function(a,b){var c=a["auto-orient"]||"",d=a.thumbnail||"",e=a.strip||"",f=a.gravity||"",g=a.crop||"",h=a.quality||"",i=a.rotate||"",j=a.format||"",k=a.blur||"";var l="imageMogr2";return l+=c?"/auto-orient":"",l+=d?"/thumbnail/"+d:"",l+=e?"/strip":"",l+=f?"/gravity/"+f:"",l+=h?"/quality/"+h:"",l+=g?"/crop/"+g:"",l+=i?"/rotate/"+i:"",l+=j?"/format/"+j:"",l+=k?"/blur/"+k:"",b&&(l=this.getUrl(b)+"?"+l),l},this.watermark=function(a,b){var c=a.mode;if(!c)return!1;var d="watermark/"+c;if(1===c){var e=a.image||"";if(!e)return!1;d+=e?"/image/"+this.URLSafeBase64Encode(e):""}else{if(2!==c)return!1;var f=a.text?a.text:"",g=a.font?a.font:"",h=a.fontsize?a.fontsize:"",i=a.fill?a.fill:"";if(!f)return!1;d+=f?"/text/"+this.URLSafeBase64Encode(f):"",d+=g?"/font/"+this.URLSafeBase64Encode(g):"",d+=h?"/fontsize/"+h:"",d+=i?"/fill/"+this.URLSafeBase64Encode(i):""}var j=a.dissolve||"",k=a.gravity||"",l=a.dx||"",m=a.dy||"";return d+=j?"/dissolve/"+j:"",d+=k?"/gravity/"+k:"",d+=l?"/dx/"+l:"",d+=m?"/dy/"+m:"",b&&(d=this.getUrl(b)+"?"+d),d},this.imageInfo=function(a){if(!a)return!1;var b=this.getUrl(a)+"?imageInfo";var c=this.createAjax();var d;var e=this;return c.open("GET",b,!1),c.onreadystatechange=function(){4===c.readyState&&200===c.status&&(d=e.parseJSON(c.responseText))},c.send(),d},this.exif=function(a){if(!a)return!1;var b=this.getUrl(a)+"?exif";var c=this.createAjax();var d;var e=this;return c.open("GET",b,!1),c.onreadystatechange=function(){4===c.readyState&&200===c.status&&(d=e.parseJSON(c.responseText))},c.send(),d},this.get=function(a,b){return b&&a?"exif"===a?this.exif(b):"imageInfo"===a?this.imageInfo(b):!1:!1},this.pipeline=function(a,b){var c="[object Array]"===Object.prototype.toString.call(a);var d,e,f="";if(c){for(var g=0,h=a.length;h>g;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
From d1a4ccc2d98d73c13048176c091aeb0b7ccb3de7 Mon Sep 17 00:00:00 2001
From: lizhiwei <550822844@qq.com>
Date: Wed, 15 Mar 2017 16:18:12 +0800
Subject: [PATCH 6/8] modify gitignore
---
.gitignore | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index a37385d1..35c68c80 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,4 @@
node_modules
bower_components
demo/config.js
-demo/deploy.sh
+deploy.sh
From 2460395efda74132eae2690d9fb8bdce73e68add Mon Sep 17 00:00:00 2001
From: lizhiwei <550822844@qq.com>
Date: Wed, 15 Mar 2017 16:26:04 +0800
Subject: [PATCH 7/8] MIT
---
README.md | 6 ++----
bower.json | 2 +-
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 8b3a1ab0..e2d6ac62 100644
--- a/README.md
+++ b/README.md
@@ -830,8 +830,6 @@ $(function() {
### 许可证
-> Copyright (c) 2014 qiniu.com
+> Copyright (c) 2017 qiniu.com
-### 基于 GPL V2 协议发布:
-
-> [www.gnu.org/licenses/gpl-2.0.html](http://www.gnu.org/licenses/gpl-2.0.html)
+### 基于 MIT 协议发布
diff --git a/bower.json b/bower.json
index 351f7951..eeb3eebd 100644
--- a/bower.json
+++ b/bower.json
@@ -6,7 +6,7 @@
"moduleType": [
"globals"
],
- "license": "GPL V2",
+ "license": "MIT",
"ignore": [
"**/.*",
"node_modules",
From 912428cd9fb801a9a9b4551d9e5ec6e787b817ca Mon Sep 17 00:00:00 2001
From: lizhiwei <550822844@qq.com>
Date: Wed, 15 Mar 2017 16:28:21 +0800
Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8F=E8=A7=88?=
=?UTF-8?q?=E5=99=A8=E7=89=88=E6=9C=AC=E8=BF=87=E4=BD=8E=E7=9A=84=E6=8F=90?=
=?UTF-8?q?=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
demo/views/performance.html | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/demo/views/performance.html b/demo/views/performance.html
index 2d1ca884..1e332071 100644
--- a/demo/views/performance.html
+++ b/demo/views/performance.html
@@ -14,12 +14,12 @@
-
- 您好,您的浏览器版本过低,请使用谷歌、火狐、Opera、IE9+等高级浏览器...
-
+
+ 您好,您的浏览器版本过低,请使用谷歌、火狐、IE9+等高级浏览器...
+
-
+
开始检测
{{loadMessage}}
@@ -33,4 +33,4 @@
-
\ No newline at end of file
+