diff --git a/dist/qiniu.js b/dist/qiniu.js index 2d31d988..611fe393 100644 --- a/dist/qiniu.js +++ b/dist/qiniu.js @@ -1,12 +1,12 @@ /*! - * qiniu-js-sdk v1.0.10-beta + * qiniu-js-sdk v1.0.13-beta * * Copyright 2015 by Qiniu * Released under GPL V2 License. * * GitHub: http://github.com/qiniu/js-sdk * - * Date: 2015-12-9 + * Date: 2015-12-28 */ /*global plupload ,mOxie*/ @@ -16,6 +16,53 @@ ;(function( global ){ +/** + * Creates new cookie or removes cookie with negative expiration + * @param key The key or identifier for the store + * @param value Contents of the store + * @param exp Expiration - creation defaults to 30 days + */ +function createCookie(key, value, exp) { + var date = new Date(); + date.setTime(date.getTime() + (exp * 24 * 60 * 60 * 1000)); + var expires = "; expires=" + date.toGMTString(); + document.cookie = key + "=" + value + expires + "; path=/"; +} + +/** + * Returns contents of cookie + * @param key The key or identifier for the store + */ +function readCookie(key) { + var nameEQ = key + "="; + var ca = document.cookie.split(';'); + for (var i = 0, max = ca.length; i < max; i++) { + var c = ca[i]; + while (c.charAt(0) === ' ') { + c = c.substring(1, c.length); + } + if (c.indexOf(nameEQ) === 0) { + return c.substring(nameEQ.length, c.length); + } + } + return null; +} + + +if ( !window.localStorage ) { + window.localStorage = { + setItem: function (key, value) { + createCookie(key, value, 30); + }, + getItem: function (key) { + return readCookie(key); + }, + removeItem: function (key) { + createCookie(key, '', -1); + } + }; +} + function QiniuJsSDK() { var that = this; @@ -402,47 +449,7 @@ function QiniuJsSDK() { */ this.uploader = function(op) { - if (op.log_level) { - logger.level = op.log_level; - } - - if (!op.domain) { - throw 'domain setting in options is required!'; - } - - if (!op.browse_button) { - throw 'browse_button setting in options is required!'; - } - - logger.debug("init uploader start"); - - logger.debug("environment: ", mOxie.Env); - - logger.debug("userAgent: ", navigator.userAgent); - - var option = {}; - - // hold the handler from user passed options - var _Error_Handler = op.init && op.init.Error; - var _FileUploaded_Handler = op.init && op.init.FileUploaded; - - // replace the handler for intercept - op.init.Error = function() {}; - op.init.FileUploaded = function() {}; - - that.uptoken_url = op.uptoken_url; - that.token = ''; - that.key_handler = typeof op.init.Key === 'function' ? op.init.Key : ''; - this.domain = op.domain; - // TODO: ctx is global in scope of a uploader instance - // this maybe cause error - var ctx = ''; - var speedCalInfo = { - isResumeUpload: false, - resumeFilesize: 0, - startTime: '', - currentTime: '' - }; + /********** inner function define start **********/ // according the different condition to reset chunk size // and the upload strategy according with the chunk size @@ -455,7 +462,8 @@ function QiniuJsSDK() { var isSpecialSafari = (mOxie.Env.browser === "Safari" && mOxie.Env.version <= 5 && mOxie.Env.os === "Windows" && mOxie.Env.osVersion === "7") || (mOxie.Env.browser === "Safari" && mOxie.Env.os === "iOS" && mOxie.Env.osVersion === "7"); // case IE 9-,chunk_size is not empty and flash is included in runtimes // set op.chunk_size to zero - if (ie && ie <= 9 && op.chunk_size && op.runtimes.indexOf('flash') >= 0) { + //if (ie && ie <= 9 && op.chunk_size && op.runtimes.indexOf('flash') >= 0) { + if (ie && ie <= 9 && op.chunk_size && op.runtimes.indexOf('flash') < 0) { // link: http://www.plupload.com/docs/Frequently-Asked-Questions#when-to-use-chunking-and-when-not // when plupload chunk_size setting is't null ,it cause bug in ie8/9 which runs flash runtimes (not support html5) . op.chunk_size = 0; @@ -478,10 +486,6 @@ function QiniuJsSDK() { // if op.chunk_size set 0 will be cause to direct upload }; - reset_chunk_size(); - logger.debug("invoke reset_chunk_size()"); - logger.debug("op.chunk_size: ", op.chunk_size); - // if op.uptoken has no value // get token from 'uptoken_url' // else @@ -524,6 +528,54 @@ function QiniuJsSDK() { return key; }; + /********** inner function define end **********/ + + if (op.log_level) { + logger.level = op.log_level; + } + + if (!op.domain) { + throw 'domain setting in options is required!'; + } + + if (!op.browse_button) { + throw 'browse_button setting in options is required!'; + } + + logger.debug("init uploader start"); + + logger.debug("environment: ", mOxie.Env); + + logger.debug("userAgent: ", navigator.userAgent); + + var option = {}; + + // hold the handler from user passed options + var _Error_Handler = op.init && op.init.Error; + var _FileUploaded_Handler = op.init && op.init.FileUploaded; + + // replace the handler for intercept + op.init.Error = function() {}; + op.init.FileUploaded = function() {}; + + that.uptoken_url = op.uptoken_url; + that.token = ''; + that.key_handler = typeof op.init.Key === 'function' ? op.init.Key : ''; + this.domain = op.domain; + // TODO: ctx is global in scope of a uploader instance + // this maybe cause error + var ctx = ''; + var speedCalInfo = { + isResumeUpload: false, + resumeFilesize: 0, + startTime: '', + currentTime: '' + }; + + reset_chunk_size(); + logger.debug("invoke reset_chunk_size()"); + logger.debug("op.chunk_size: ", op.chunk_size); + // compose options with user passed options and default setting plupload.extend(option, op, { url: qiniuUploadUrl, @@ -542,6 +594,13 @@ function QiniuJsSDK() { // bind getUpToken to 'Init' event uploader.bind('Init', function(up, params) { logger.debug("Init event activated"); + // if op.get_new_uptoken is not true + // invoke getUptoken when uploader init + // else + // getUptoken everytime before a new file upload + if(!op.get_new_uptoken){ + getUpToken(); + } getUpToken(); }); @@ -657,7 +716,7 @@ function QiniuJsSDK() { if (localFileInfo) { // TODO: although only the html5 runtime will enter this statement // but need uniform way to make convertion between string and json - localFileInfo = JSON.parse(localFileInfo); + localFileInfo = that.parseJSON(localFileInfo); var now = (new Date()).getTime(); var before = localFileInfo.time || 0; var aDay = 24 * 60 * 60 * 1000; // milliseconds of one day @@ -713,7 +772,7 @@ function QiniuJsSDK() { }); } } else { - logger.debug("directUpload because uploader.runtime !== 'html5' || !chunk_size"); + logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"); // direct upload if runtime is not html5 directUpload(up, file, that.key_handler); } @@ -740,7 +799,10 @@ function QiniuJsSDK() { // store the chunk upload info and set next chunk upload url uploader.bind('ChunkUploaded', function(up, file, info) { logger.debug("ChunkUploaded event activated"); + logger.debug("file: ", file); + logger.debug("info: ", info); var res = that.parseJSON(info.response); + logger.debug("res: ", res); // ctx should look like '[chunk01_ctx],[chunk02_ctx],[chunk03_ctx],...' ctx = ctx ? ctx + ',' + res.ctx : res.ctx; var leftSize = info.total - info.offset; @@ -750,8 +812,9 @@ function QiniuJsSDK() { up.setOption({ 'url': qiniuUploadUrl + '/mkblk/' + leftSize }); + logger.debug("up.setOption url: ", qiniuUploadUrl + '/mkblk/' + leftSize); } - localStorage.setItem(file.name, JSON.stringify({ + localStorage.setItem(file.name, that.stringifyJSON({ ctx: ctx, percent: file.percent, total: info.total, @@ -862,7 +925,8 @@ function QiniuJsSDK() { uploader.bind('FileUploaded', (function(_FileUploaded_Handler) { return function(up, file, info) { logger.debug("FileUploaded event activated"); - + logger.debug("file: ", file); + logger.debug("info: ", info); var last_step = function(up, file, info) { if (op.downtoken_url) { // if op.dowontoken_url is not empty @@ -882,7 +946,7 @@ function QiniuJsSDK() { var info_extended = {}; plupload.extend(info_extended, that.parseJSON(info), res_downtoken); if (_FileUploaded_Handler) { - _FileUploaded_Handler(up, file, JSON.stringify(info_extended)); + _FileUploaded_Handler(up, file, that.stringifyJSON(info_extended)); } } else { uploader.trigger('Error', { @@ -908,8 +972,10 @@ function QiniuJsSDK() { // we need request the mkfile to compose all uploaded chunks // else // invalke the last_step + logger.debug("ctx: ", ctx); if (ctx) { var key = ''; + logger.debug("save_key: ", op.save_key); if (!op.save_key) { key = getFileKey(up, file, that.key_handler); key = key ? '/key/' + that.URLSafeBase64Encode(key) : ''; @@ -917,6 +983,7 @@ function QiniuJsSDK() { var fname = '/fname/' + that.URLSafeBase64Encode(file.name); + logger.debug("op.x_vars: ", op.x_vars); var x_vars = op.x_vars, x_val = '', x_vars_url = ''; @@ -934,27 +1001,46 @@ function QiniuJsSDK() { } var url = qiniuUploadUrl + '/mkfile/' + file.size + key + fname + x_vars_url; - var ajax = that.createAjax(); + + var ie = that.detectIEVersion(); + var ajax; + if (ie && ie <= 9) { + ajax = new mOxie.XMLHttpRequest(); + mOxie.Env.swf_url = op.flash_swf_url; + }else{ + ajax = that.createAjax(); + } ajax.open('POST', url, true); ajax.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8'); ajax.setRequestHeader('Authorization', 'UpToken ' + that.token); - ajax.onreadystatechange = function() { + var onreadystatechange = function(){ + logger.debug("ajax.readyState: ", ajax.readyState); if (ajax.readyState === 4) { localStorage.removeItem(file.name); + var info; if (ajax.status === 200) { - var info = ajax.responseText; + info = ajax.responseText; + logger.debug("mkfile is success: ", info); last_step(up, file, info); } else { - uploader.trigger('Error', { + info = { status: ajax.status, response: ajax.responseText, file: file, code: -200 - }); + }; + logger.debug("mkfile is error: ", info); + uploader.trigger('Error', info); } } }; + if (ie && ie <= 9) { + ajax.bind('readystatechange', onreadystatechange); + }else{ + ajax.onreadystatechange = onreadystatechange; + } ajax.send(ctx); + logger.debug("mkfile: ", url); } else { last_step(up, file, info.response); } diff --git a/dist/qiniu.min.js b/dist/qiniu.min.js index e9a7c629..58c7effa 100644 --- a/dist/qiniu.min.js +++ b/dist/qiniu.min.js @@ -1,3 +1,3 @@ -/*! qiniu-js-sdk v1.0.10-beta | Copyright 2015 by Qiniu */ -!function(global){function QiniuJsSDK(){var that=this;var qiniuUploadUrl;qiniuUploadUrl="https:"===window.location.protocol?"https://up.qbox.me":"http://upload.qiniu.com",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+"]";if(that.detectIEVersion()){var d=c;for(var e=0;e=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);this.isImage=function(a){var b,c="";var d=["png","jpg","jpeg","gif","bmp"];var e=/\.([a-zA-Z0-9]+)(\?|\@|$)/;if(!a||!e.test(a))return!1;b=e.exec(a),c=b[1].toLowerCase();for(var f=0,g=d.length;g>f;f++)if(c===d[f])return!0;return!1},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_encode=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=this.utf8_encode(a+"");do c=a.charCodeAt(k++),d=a.charCodeAt(k++),e=a.charCodeAt(k++),j=c<<16|d<<8|e,f=j>>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){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!";logger.debug("init uploader start"),logger.debug("environment: ",mOxie.Env),logger.debug("userAgent: ",navigator.userAgent);var b={};var c=a.init&&a.init.Error;var d=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 e="";var f={isResumeUpload:!1,resumeFilesize:0,startTime:"",currentTime:""};var g=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))};g(),logger.debug("invoke reset_chunk_size()"),logger.debug("op.chunk_size: ",a.chunk_size);var h=function(){if(a.uptoken)that.token=a.uptoken;else{var b=that.createAjax();b.open("GET",that.uptoken_url,!0),b.setRequestHeader("If-Modified-Since","0"),b.onreadystatechange=function(){if(4===b.readyState&&200===b.status){var a=that.parseJSON(b.responseText);that.token=a.uptoken}},b.send()}};var i=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};plupload.extend(b,a,{url:qiniuUploadUrl,multipart_params:{token:""}}),logger.debug("option: ",b);var j=new plupload.Uploader(b);return logger.debug("new plupload.Uploader(option)"),j.bind("Init",function(a,b){logger.debug("Init event activated"),h()}),logger.debug("bind Init event"),j.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),c&&setTimeout(function(){a.start(),logger.debug("invoke up.start()")},0),a.refresh()}),logger.debug("bind FilesAdded event"),j.bind("BeforeUpload",function(b,c){logger.debug("BeforeUpload event activated"),c.speed=c.speed||0,e="",a.get_new_uptoken&&h();var d=function(b,c,d){f.startTime=(new Date).getTime();var e;e=a.save_key?{token:that.token}:{key:i(b,c,d),token:that.token},logger.debug("directUpload multipart_params_obj: ",e);var h=a.x_vars;if(void 0!==h&&"object"==typeof h)for(var j in h)h.hasOwnProperty(j)&&("function"==typeof h[j]?e["x:"+j]=h[j](b,c):"object"!=typeof h[j]&&(e["x:"+j]=h[j]));b.setOption({url:qiniuUploadUrl,multipart:!0,chunk_size:g()?a.max_file_size:void 0,multipart_params:e})};var g=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 k=b.getOption&&b.getOption("chunk_size");if(k=k||b.settings&&b.settings.chunk_size,logger.debug("uploader.runtime: ",j.runtime),logger.debug("chunk_size: ",k),"html5"!==j.runtime&&"flash"!==j.runtime||!k)logger.debug("directUpload because uploader.runtime !== 'html5' || !chunk_size"),d(b,c,that.key_handler);else if(c.sizen-o&&100!==l.percent&&c.size===l.total?(c.percent=l.percent,c.loaded=l.offset,e=l.ctx,f.isResumeUpload=!0,f.resumeFilesize=l.offset,l.offset+m>c.size&&(m=c.size-l.offset)):localStorage.removeItem(c.name)}f.startTime=(new Date).getTime(),b.setOption({url:qiniuUploadUrl+"/mkblk/"+m,multipart:!1,chunk_size:k,required_features:"chunks",headers:{Authorization:"UpToken "+that.token},multipart_params:{}})}}),logger.debug("bind BeforeUpload event"),j.bind("UploadProgress",function(a,b){logger.trace("UploadProgress event activated"),f.currentTime=(new Date).getTime();var c=f.currentTime-f.startTime;var d=b.loaded||0;f.isResumeUpload&&(d=b.loaded-f.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),logger.debug("bind UploadProgress event"),j.bind("ChunkUploaded",function(a,b,c){logger.debug("ChunkUploaded event activated");var d=that.parseJSON(c.response);e=e?e+","+d.ctx:d.ctx;var f=c.total-c.offset;var g=a.getOption&&a.getOption("chunk_size");g=g||a.settings&&a.settings.chunk_size,g>f&&a.setOption({url:qiniuUploadUrl+"/mkblk/"+f}),localStorage.setItem(b.name,JSON.stringify({ctx:e,percent:b.percent,total:c.total,offset:c.offset,time:(new Date).getTime()}))}),logger.debug("bind ChunkUploaded event"),j.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){d=c.message||"\u672a\u77e5\u7f51\u7edc\u9519\u8bef\u3002";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:d="\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";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:d="\u672a\u77e5\u9519\u8bef\u3002"}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",j.destroy();break;default:d=c.message+c.details}a&&a(b,c,d)}b.refresh()}}(c)),logger.debug("bind Error event"),j.bind("FileUploaded",function(b){return function(c,d,f){logger.debug("FileUploaded event activated");var g=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,JSON.stringify(h))}else j.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 h=that.parseJSON(f.response);if(e=e?e:h.ctx){var k="";a.save_key||(k=i(c,d,that.key_handler),k=k?"/key/"+that.URLSafeBase64Encode(k):"");var l="/fname/"+that.URLSafeBase64Encode(d.name);var m=a.x_vars,n="",o="";if(void 0!==m&&"object"==typeof m)for(var p in m)m.hasOwnProperty(p)&&("function"==typeof m[p]?n=that.URLSafeBase64Encode(m[p](c,d)):"object"!=typeof m[p]&&(n=that.URLSafeBase64Encode(m[p])),o+="/x:"+p+"/"+n);var q=qiniuUploadUrl+"/mkfile/"+d.size+k+l+o;var r=that.createAjax();r.open("POST",q,!0),r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"),r.setRequestHeader("Authorization","UpToken "+that.token),r.onreadystatechange=function(){if(4===r.readyState)if(localStorage.removeItem(d.name),200===r.status){var a=r.responseText;g(c,d,a)}else j.trigger("Error",{status:r.status,response:r.responseText,file:d,code:-200})},r.send(e)}else g(c,d,f.response)}}(d)),logger.debug("bind FileUploaded event"),j.init(),logger.debug("invoke uploader.init()"),logger.debug("init uploader end"),j},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){var c=a.mode||"",d=a.w||"",e=a.h||"",f=a.q||"",g=a.format||"";if(!c)return!1;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-sdk v1.0.13-beta | 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;var qiniuUploadUrl;qiniuUploadUrl="https:"===window.location.protocol?"https://up.qbox.me":"http://upload.qiniu.com",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+"]";if(that.detectIEVersion()){var d=c;for(var e=0;e=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);this.isImage=function(a){var b,c="";var d=["png","jpg","jpeg","gif","bmp"];var e=/\.([a-zA-Z0-9]+)(\?|\@|$)/;if(!a||!e.test(a))return!1;b=e.exec(a),c=b[1].toLowerCase();for(var f=0,g=d.length;g>f;f++)if(c===d[f])return!0;return!1},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_encode=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=this.utf8_encode(a+"");do c=a.charCodeAt(k++),d=a.charCodeAt(k++),e=a.charCodeAt(k++),j=c<<16|d<<8|e,f=j>>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(){if(a.uptoken)that.token=a.uptoken;else{var b=that.createAjax();b.open("GET",that.uptoken_url,!0),b.setRequestHeader("If-Modified-Since","0"),b.onreadystatechange=function(){if(4===b.readyState&&200===b.status){var a=that.parseJSON(b.responseText);that.token=a.uptoken}},b.send()}};var d=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!";logger.debug("init uploader start"),logger.debug("environment: ",mOxie.Env),logger.debug("userAgent: ",navigator.userAgent);var e={};var f=a.init&&a.init.Error;var g=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 h="";var i={isResumeUpload:!1,resumeFilesize:0,startTime:"",currentTime:""};b(),logger.debug("invoke reset_chunk_size()"),logger.debug("op.chunk_size: ",a.chunk_size),plupload.extend(e,a,{url:qiniuUploadUrl,multipart_params:{token:""}}),logger.debug("option: ",e);var j=new plupload.Uploader(e);return logger.debug("new plupload.Uploader(option)"),j.bind("Init",function(b,d){logger.debug("Init event activated"),a.get_new_uptoken||c(),c()}),logger.debug("bind Init event"),j.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),c&&setTimeout(function(){a.start(),logger.debug("invoke up.start()")},0),a.refresh()}),logger.debug("bind FilesAdded event"),j.bind("BeforeUpload",function(b,e){logger.debug("BeforeUpload event activated"),e.speed=e.speed||0,h="",a.get_new_uptoken&&c();var f=function(b,c,e){i.startTime=(new Date).getTime();var f;f=a.save_key?{token:that.token}:{key:d(b,c,e),token:that.token},logger.debug("directUpload multipart_params_obj: ",f);var h=a.x_vars;if(void 0!==h&&"object"==typeof h)for(var j in h)h.hasOwnProperty(j)&&("function"==typeof h[j]?f["x:"+j]=h[j](b,c):"object"!=typeof h[j]&&(f["x:"+j]=h[j]));b.setOption({url:qiniuUploadUrl,multipart:!0,chunk_size:g()?a.max_file_size:void 0,multipart_params:f})};var g=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 k=b.getOption&&b.getOption("chunk_size");if(k=k||b.settings&&b.settings.chunk_size,logger.debug("uploader.runtime: ",j.runtime),logger.debug("chunk_size: ",k),"html5"!==j.runtime&&"flash"!==j.runtime||!k)logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"),f(b,e,that.key_handler);else if(e.sizen-o&&100!==l.percent&&e.size===l.total?(e.percent=l.percent,e.loaded=l.offset,h=l.ctx,i.isResumeUpload=!0,i.resumeFilesize=l.offset,l.offset+m>e.size&&(m=e.size-l.offset)):localStorage.removeItem(e.name)}i.startTime=(new Date).getTime(),b.setOption({url:qiniuUploadUrl+"/mkblk/"+m,multipart:!1,chunk_size:k,required_features:"chunks",headers:{Authorization:"UpToken "+that.token},multipart_params:{}})}}),logger.debug("bind BeforeUpload event"),j.bind("UploadProgress",function(a,b){logger.trace("UploadProgress event activated"),i.currentTime=(new Date).getTime();var c=i.currentTime-i.startTime;var d=b.loaded||0;i.isResumeUpload&&(d=b.loaded-i.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),logger.debug("bind UploadProgress event"),j.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),h=h?h+","+d.ctx:d.ctx;var e=c.total-c.offset;var f=a.getOption&&a.getOption("chunk_size");f=f||a.settings&&a.settings.chunk_size,f>e&&(a.setOption({url:qiniuUploadUrl+"/mkblk/"+e}),logger.debug("up.setOption url: ",qiniuUploadUrl+"/mkblk/"+e)),localStorage.setItem(b.name,that.stringifyJSON({ctx:h,percent:b.percent,total:c.total,offset:c.offset,time:(new Date).getTime()}))}),logger.debug("bind ChunkUploaded event"),j.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){d=c.message||"\u672a\u77e5\u7f51\u7edc\u9519\u8bef\u3002";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:d="\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";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:d="\u672a\u77e5\u9519\u8bef\u3002"}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",j.destroy();break;default:d=c.message+c.details}a&&a(b,c,d)}b.refresh()}}(f)),logger.debug("bind Error event"),j.bind("FileUploaded",function(b){return function(c,e,f){logger.debug("FileUploaded event activated"),logger.debug("file: ",e),logger.debug("info: ",f);var g=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 j.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 i=that.parseJSON(f.response);if(h=h?h:i.ctx,logger.debug("ctx: ",h),h){var k="";logger.debug("save_key: ",a.save_key),a.save_key||(k=d(c,e,that.key_handler),k=k?"/key/"+that.URLSafeBase64Encode(k):"");var l="/fname/"+that.URLSafeBase64Encode(e.name);logger.debug("op.x_vars: ",a.x_vars);var m=a.x_vars,n="",o="";if(void 0!==m&&"object"==typeof m)for(var p in m)m.hasOwnProperty(p)&&("function"==typeof m[p]?n=that.URLSafeBase64Encode(m[p](c,e)):"object"!=typeof m[p]&&(n=that.URLSafeBase64Encode(m[p])),o+="/x:"+p+"/"+n);var q=qiniuUploadUrl+"/mkfile/"+e.size+k+l+o;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(e.name);var a;200===s.status?(a=s.responseText,logger.debug("mkfile is success: ",a),g(c,e,a)):(a={status:s.status,response:s.responseText,file:e,code:-200},logger.debug("mkfile is error: ",a),j.trigger("Error",a))}};r&&9>=r?s.bind("readystatechange",t):s.onreadystatechange=t,s.send(h),logger.debug("mkfile: ",q)}else g(c,e,f.response)}}(g)),logger.debug("bind FileUploaded event"),j.init(),logger.debug("invoke uploader.init()"),logger.debug("init uploader end"),j},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){var c=a.mode||"",d=a.w||"",e=a.h||"",f=a.q||"",g=a.format||"";if(!c)return!1;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 diff --git a/dist/qiniu.min.map b/dist/qiniu.min.map index f5bf1f1b..4ec66437 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","QiniuJsSDK","that","this","qiniuUploadUrl","window","location","protocol","detectIEVersion","v","div","document","createElement","all","getElementsByTagName","innerHTML","logger","MUTE","FATA","ERROR","WARN","INFO","DEBUG","TRACE","level","log","type","args","header","msg","i","length","stringifyJSON","console","unshift","apply","makeLogFunc","code","func","toLowerCase","Array","prototype","slice","call","arguments","property","hasOwnProperty","isImage","url","res","suffix","imageSuffixes","suffixMatch","test","exec","l","getFileExtension","filename","tempArr","split","ext","pop","utf8_encode","argString","string","utftext","start","end","stringl","n","c1","charCodeAt","enc","String","fromCharCode","RangeError","c2","base64_encode","data","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","tmp_arr","charAt","join","URLSafeBase64Encode","replace","createAjax","argument","xmlhttp","XMLHttpRequest","ActiveXObject","parseJSON","JSON","parse","rx_dangerous","text","lastIndex","a","toString","eval","obj","stringify","map","strArr","len","push","trim","uploader","op","log_level","domain","browse_button","debug","mOxie","Env","navigator","userAgent","option","_Error_Handler","init","Error","_FileUploaded_Handler","FileUploaded","uptoken_url","token","key_handler","Key","ctx","speedCalInfo","isResumeUpload","resumeFilesize","startTime","currentTime","reset_chunk_size","ie","BLOCK_BITS","MAX_CHUNK_SIZE","chunk_size","isSpecialSafari","browser","version","os","osVersion","runtimes","indexOf","plupload","parseSize","getUpToken","uptoken","ajax","open","setRequestHeader","onreadystatechange","readyState","status","responseText","send","getFileKey","up","file","key","unique_names","save_key","getOption","settings","name","id","extend","multipart_params","Uploader","bind","params","files","auto_start","setTimeout","refresh","speed","get_new_uptoken","directUpload","Date","getTime","multipart_params_obj","x_vars","undefined","x_key","setOption","multipart","is_android_weixin_or_qq","max_file_size","ua","match","OS","runtime","size","localFileInfo","localStorage","getItem","blockSize","now","before","time","aDay","percent","total","loaded","offset","removeItem","required_features","headers","Authorization","trace","timeUsed","fileUploaded","toFixed","info","response","leftSize","setItem","err","error","errTip","FAILED","FILE_SIZE_ERROR","FILE_EXTENSION_ERROR","HTTP_ERROR","message","errorObj","errorText","e","SECURITY_ERROR","GENERIC_ERROR","IO_ERROR","INIT_ERROR","destroy","details","last_step","downtoken_url","ajax_downtoken","res_downtoken","info_extended","trigger","fname","x_val","x_vars_url","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","xhr","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","qiniuUploadUrl","location","protocol","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","makeLogFunc","code","func","toLowerCase","Array","prototype","slice","call","arguments","property","hasOwnProperty","isImage","url","res","suffix","imageSuffixes","suffixMatch","test","exec","l","getFileExtension","filename","tempArr","ext","pop","utf8_encode","argString","string","utftext","start","end","stringl","n","c1","charCodeAt","enc","String","fromCharCode","RangeError","c2","base64_encode","data","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","tmp_arr","join","URLSafeBase64Encode","replace","createAjax","argument","xmlhttp","XMLHttpRequest","ActiveXObject","parseJSON","JSON","parse","rx_dangerous","text","lastIndex","a","toString","eval","obj","stringify","map","strArr","len","push","trim","uploader","op","reset_chunk_size","ie","BLOCK_BITS","MAX_CHUNK_SIZE","chunk_size","isSpecialSafari","mOxie","Env","browser","version","os","osVersion","runtimes","plupload","parseSize","getUpToken","uptoken","token","ajax","open","uptoken_url","setRequestHeader","onreadystatechange","readyState","status","responseText","send","getFileKey","up","file","unique_names","save_key","getOption","settings","name","id","log_level","domain","browse_button","debug","navigator","userAgent","option","_Error_Handler","init","Error","_FileUploaded_Handler","FileUploaded","key_handler","Key","ctx","speedCalInfo","isResumeUpload","resumeFilesize","startTime","currentTime","extend","multipart_params","Uploader","bind","params","get_new_uptoken","files","auto_start","setTimeout","refresh","speed","directUpload","multipart_params_obj","x_vars","undefined","x_key","setOption","multipart","is_android_weixin_or_qq","max_file_size","ua","match","OS","runtime","size","localFileInfo","blockSize","now","before","time","aDay","percent","total","loaded","offset","required_features","headers","Authorization","trace","timeUsed","fileUploaded","toFixed","info","response","leftSize","err","error","errTip","FAILED","FILE_SIZE_ERROR","FILE_EXTENSION_ERROR","HTTP_ERROR","message","errorObj","errorText","e","SECURITY_ERROR","GENERIC_ERROR","IO_ERROR","INIT_ERROR","destroy","details","last_step","downtoken_url","ajax_downtoken","res_downtoken","info_extended","trigger","fname","x_val","x_vars_url","swf_url","flash_swf_url","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","xhr","exif","get","pipeline","arr","isArray","Object","errOp","fop","Qiniu"],"mappings":";CAgBC,SAAWA,QAQZ,QAASC,cAAaC,EAAKC,EAAOC,GAC9B,GAAIC,GAAO,GAAIC,KACfD,GAAKE,QAAQF,EAAKG,UAAmB,GAANJ,EAAW,GAAK,GAAK,IACpD,IAAIK,GAAU,aAAeJ,EAAKK,aAClCC,UAASC,OAASV,EAAM,IAAMC,EAAQM,EAAU,WAOpD,QAASI,YAAWX,GAChB,GAAIY,GAASZ,EAAM,GACnB,IAAIa,GAAKJ,SAASC,OAAOI,MAAM,IAC/B,KAAK,GAAIC,GAAI,EAAGC,EAAMH,EAAGI,OAAYD,EAAJD,EAASA,IAAK,CAC3C,GAAIG,GAAIL,EAAGE,EACX,OAAuB,MAAhBG,EAAEC,OAAO,GACZD,EAAIA,EAAEE,UAAU,EAAGF,EAAED,OAEzB,IAA0B,IAAtBC,EAAEG,QAAQT,GACV,MAAOM,GAAEE,UAAUR,EAAOK,OAAQC,EAAED,QAG5C,MAAO,MAILK,OAAOC,eACTD,OAAOC,cACHC,QAAS,SAAUxB,EAAKC,GACpBF,aAAaC,EAAKC,EAAO,KAE7BwB,QAAS,SAAUzB,GACf,MAAOW,YAAWX,IAEtB0B,WAAY,SAAU1B,GAClBD,aAAaC,EAAK,GAAI,MAKlC,SAAS2B,cAEL,GAAIC,MAAOC,IAEX,IAAIC,eAEAA,gBAD6B,WAA7BR,OAAOS,SAASC,SACC,qBAEA,0BAWrBH,KAAKI,gBAAkB,WACnB,GAAIC,GAAI,EACJC,EAAM1B,SAAS2B,cAAc,OAC7BC,EAAMF,EAAIG,qBAAqB,IACnC,OACIH,EAAII,UAAY,iBAAmBL,EAAI,wBACvCG,EAAI,GAEJH,GAEJ,OAAOA,GAAI,EAAIA,GAAI,EAGvB,IAAIM,SACAC,KAAM,EACNC,KAAM,EACNC,MAAO,EACPC,KAAM,EACNC,KAAM,EACNC,MAAO,EACPC,MAAO,EACPC,MAAO,EAGX,SAASC,KAAIC,EAAMC,GACf,GAAIC,GAAS,kBAAkBF,EAAK,GACpC,IAAItB,KAAKK,kBAAmB,CAIxB,GAAIoB,GAAMD,CACV,KAAK,GAAIrC,GAAI,EAAGA,EAAIoC,EAAKlC,OAAQF,IAC7BsC,GAAKzB,KAAK0B,cAAcH,EAAKpC,GAEjCwC,SAAQN,IAAII,OAEZF,GAAKK,QAAQJ,GACbG,QAAQN,IAAIQ,MAAMF,QAASJ,GAInC,QAASO,aAAYC,GACjB,GAAIC,GAAOD,EAAKE,aAChBrB,QAAOoB,GAAQ,WAGX,GAAGtC,OAAOiC,SAAWjC,OAAOiC,QAAQN,KAAOT,OAAOQ,OAAOR,OAAOmB,GAAM,CAClE,GAAIR,GAAOW,MAAMC,UAAUC,MAAMC,KAAKC,UACtCjB,KAAIW,EAAKT,KAKrB,IAAK,GAAIgB,YAAY3B,QACbA,OAAO4B,eAAeD,WAA2C,gBAAtB3B,QAAO2B,YAA4B3B,OAAO4B,eAAeD,SAASN,gBAC7GH,YAAYS,SAUpBtC,MAAKwC,QAAU,SAASC,GACpB,GAAIC,GAAKC,EAAS,EAClB,IAAIC,IAAiB,MAAO,MAAO,OAAQ,MAAO,MAClD,IAAIC,GAAc,2BAElB,KAAKJ,IAAQI,EAAYC,KAAKL,GAC1B,OAAO,CAEXC,GAAMG,EAAYE,KAAKN,GACvBE,EAASD,EAAI,GAAGV,aAChB,KAAK,GAAI9C,GAAI,EAAG8D,EAAIJ,EAAcxD,OAAY4D,EAAJ9D,EAAOA,IAC7C,GAAIyD,IAAWC,EAAc1D,GACzB,OAAO,CAGf,QAAO,GAWXc,KAAKiD,iBAAmB,SAASC,GAC7B,GAAIC,GAAUD,EAASjE,MAAM,IAC7B,IAAImE,EAMJ,OAJIA,GADmB,IAAnBD,EAAQ/D,QAAgC,KAAf+D,EAAQ,IAAgC,IAAnBA,EAAQ/D,OAChD,GAEA+D,EAAQE,MAAMrB,eAU5BhC,KAAKsD,YAAc,SAASC,GAgBxB,GAAkB,OAAdA,GAA2C,mBAAdA,GAC7B,MAAO,EAGX,IAAIC,GAAUD,EAAY,EAC1B,IAAIE,GAAU,GACVC,EAAOC,EAAKC,EAAU,CAE1BF,GAAQC,EAAM,EACdC,EAAUJ,EAAOpE,MACjB,KAAK,GAAIyE,GAAI,EAAOD,EAAJC,EAAaA,IAAK,CAC9B,GAAIC,GAAKN,EAAOO,WAAWF,EAC3B,IAAIG,GAAM,IAEV,IAAS,IAALF,EACAH,QACG,IAAIG,EAAK,KAAY,KAALA,EACnBE,EAAMC,OAAOC,aACRJ,GAAM,EAAK,IAAW,GAALA,EAAW,SAE9B,IAAS,MAALA,GAAc,EACrBE,EAAMC,OAAOC,aACRJ,GAAM,GAAM,IAAOA,GAAM,EAAK,GAAM,IAAW,GAALA,EAAW,SAEvD,CACH,GAAS,MAALA,GAAc,EACd,KAAM,IAAIK,YAAW,gCAAkCN,EAE3D,IAAIO,GAAKZ,EAAOO,aAAaF,EAC7B,IAAS,MAALO,GAAc,EACd,KAAM,IAAID,YAAW,gCAAkCN,EAAI,GAE/DC,KAAY,KAALA,IAAe,KAAY,KAALM,GAAc,MAC3CJ,EAAMC,OAAOC,aACRJ,GAAM,GAAM,IAAOA,GAAM,GAAM,GAAM,IAAOA,GAAM,EAAK,GAAM,IAAW,GAALA,EAAW,KAG3E,OAARE,IACIL,EAAMD,IACND,GAAWD,EAAOrB,MAAMuB,EAAOC,IAEnCF,GAAWO,EACXN,EAAQC,EAAME,EAAI,GAQ1B,MAJIF,GAAMD,IACND,GAAWD,EAAOrB,MAAMuB,EAAOE,IAG5BH,GAQXzD,KAAKqE,cAAgB,SAASC,GAgB1B,GAAIC,GAAM,mEACV,IAAIC,GAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAM7F,EAAI,EACtC8F,EAAK,EACLhB,EAAM,GACNiB,IAEJ,KAAKX,EACD,MAAOA,EAGXA,GAAOtE,KAAKsD,YAAYgB,EAAO,GAE/B,GACIE,GAAKF,EAAKP,WAAW7E,KACrBuF,EAAKH,EAAKP,WAAW7E,KACrBwF,EAAKJ,EAAKP,WAAW7E,KAErB6F,EAAOP,GAAM,GAAKC,GAAM,EAAIC,EAE5BC,EAAKI,GAAQ,GAAK,GAClBH,EAAKG,GAAQ,GAAK,GAClBF,EAAKE,GAAQ,EAAI,GACjBD,EAAY,GAAPC,EAGLE,EAAQD,KAAQT,EAAIjF,OAAOqF,GAAMJ,EAAIjF,OAAOsF,GAAML,EAAIjF,OAAOuF,GAAMN,EAAIjF,OAAOwF,SACzE5F,EAAIoF,EAAKlF,OAIlB,QAFA4E,EAAMiB,EAAQC,KAAK,IAEXZ,EAAKlF,OAAS,GAClB,IAAK,GACD4E,EAAMA,EAAI7B,MAAM,EAAG,IAAM,IACzB,MACJ,KAAK,GACD6B,EAAMA,EAAI7B,MAAM,EAAG,IAAM,IAIjC,MAAO6B,IAQXhE,KAAKmF,oBAAsB,SAAS9E,GAEhC,MADAA,GAAIL,KAAKqE,cAAchE,GAChBA,EAAE+E,QAAQ,MAAO,KAAKA,QAAQ,MAAO,MAQhDpF,KAAKqF,WAAa,SAASC,GACvB,GAAIC,KAMJ,OAJIA,GADA9F,OAAO+F,eACG,GAAIA,gBAEJ,GAAIC,eAAc,sBAWpCzF,KAAK0F,UAAY,SAASpB,MAEtB,GAAI7E,OAAOkG,MAAQlG,OAAOkG,KAAKC,MAC3B,MAAOnG,QAAOkG,KAAKC,MAAMtB,KAO7B,IAAOuB,cAAe,0GAItB,IAAIC,MAAO7B,OAAOK,KAoBlB,OAnBAuB,cAAaE,UAAY,EACtBF,aAAa/C,KAAKgD,QACjBA,KAAOA,KAAKV,QAAQS,aAAc,SAASG,GACxC,MAAO,OAAS,OAASA,EAAEjC,WAAW,GAAGkC,SAAS,KAAK9D,MAAM,OAgB7D+D,KAAK,IAAIJ,KAAK,MAQzB9F,KAAKyB,cAAgB,SAAS0E,GAE1B,GAAI1G,OAAOkG,MAAQlG,OAAOkG,KAAKS,UAC3B,MAAO3G,QAAOkG,KAAKS,UAAUD,EAEjC,cAAe,IACX,IAAK,SACD,MAAO,IAAMA,EAAIf,QAAQ,WAAY,QAAU,GACnD,KAAK,QACD,MAAO,IAAMe,EAAIE,IAAItG,KAAK0B,eAAeyD,KAAK,KAAO,GACzD,KAAK,SACD,GAAIiB,YAAelE,OAAO,CACtB,GAAIqE,KACJ,IAAIC,GAAMJ,EAAI/G,MACd,KAAK,GAAIF,GAAI,EAAOqH,EAAJrH,EAASA,IACrBoH,EAAOE,KAAKzG,KAAK0B,cAAc0E,EAAIjH,IAEvC,OAAO,IAAMoH,EAAOpB,KAAK,KAAO,IAC7B,GAAY,OAARiB,EACP,MAAO,MAEP,IAAI3C,KACJ,KAAK,GAAIlB,KAAY6D,GACbA,EAAI5D,eAAeD,IACnBkB,EAAOgD,KAAKzG,KAAK0B,cAAca,GAAY,IAAMvC,KAAK0B,cAAc0E,EAAI7D,IAGhF,OAAO,IAAMkB,EAAO0B,KAAK,KAAO,GAGxC,KAAK,SACD,MAAOiB,EACX,MAAK,EACD,MAAOA,EACX,KAAK,UACD,MAAOA,KASnBnG,KAAKyG,KAAO,SAASX,GACjB,MAAgB,QAATA,EAAgB,GAAKA,EAAKV,QAAQ,aAAc,KAQ3DpF,KAAK0G,SAAW,SAASC,GAQrB,GAAIC,GAAmB,WACnB,GAAIC,GAAK9G,KAAKK,iBACd,IAAI0G,GAAYC,EAAgBC,CAEhC,IAAIC,GAAyC,WAAtBC,MAAMC,IAAIC,SAAwBF,MAAMC,IAAIE,SAAW,GAAsB,YAAjBH,MAAMC,IAAIG,IAA4C,MAAxBJ,MAAMC,IAAII,WAA6C,WAAtBL,MAAMC,IAAIC,SAAyC,QAAjBF,MAAMC,IAAIG,IAAwC,MAAxBJ,MAAMC,IAAII,SAIpNV,IAAY,GAANA,GAAWF,EAAGK,YAAcL,EAAGa,SAAShI,QAAQ,SAAW,EAGjEmH,EAAGK,WAAa,EACTC,EAIPN,EAAGK,WAAa,GAEhBF,EAAa,GACbC,EAAiB,GAAKD,EAEtBE,EAAaS,SAASC,UAAUf,EAAGK,YAC/BA,EAAaD,IACbJ,EAAGK,WAAaD,IAY5B,IAAIY,GAAa,WACb,GAAKhB,EAAGiB,QAaJ7H,KAAK8H,MAAQlB,EAAGiB,YAbH,CAEb,GAAIE,GAAO/H,KAAKsF,YAChByC,GAAKC,KAAK,MAAOhI,KAAKiI,aAAa,GACnCF,EAAKG,iBAAiB,oBAAqB,KAC3CH,EAAKI,mBAAqB,WACtB,GAAwB,IAApBJ,EAAKK,YAAoC,MAAhBL,EAAKM,OAAgB,CAC9C,GAAI1F,GAAM3C,KAAK2F,UAAUoC,EAAKO,aAC9BtI,MAAK8H,MAAQnF,EAAIkF,UAGzBE,EAAKQ,QAOb,IAAIC,GAAa,SAASC,EAAIC,EAAM1G,GAEhC,GAAI5D,GAAM,GACNuK,GAAe,CACnB,KAAK/B,EAAGgC,SAGJ,GAFAD,EAAeF,EAAGI,WAAaJ,EAAGI,UAAU,gBAC5CF,EAAeA,GAAiBF,EAAGK,UAAYL,EAAGK,SAASH,aACzC,CACd,GAAItF,GAAMrD,KAAKkD,iBAAiBwF,EAAKK,KACrC3K,GAAMiF,EAAMqF,EAAKM,GAAK,IAAM3F,EAAMqF,EAAKM,OAEvC5K,GADuB,kBAAT4D,GACRA,EAAKyG,EAAIC,GAETA,EAAKK,IAGnB,OAAO3K,GASX,IAJIwI,EAAGqC,YACHrI,OAAOQ,MAAQwF,EAAGqC,YAGjBrC,EAAGsC,OACJ,KAAM,wCAGV,KAAKtC,EAAGuC,cACJ,KAAM,+CAGVvI,QAAOwI,MAAM,uBAEbxI,OAAOwI,MAAM,gBAAiBjC,MAAMC,KAEpCxG,OAAOwI,MAAM,cAAeC,UAAUC,UAEtC,IAAIC,KAGJ,IAAIC,GAAiB5C,EAAG6C,MAAQ7C,EAAG6C,KAAKC,KACxC,IAAIC,GAAwB/C,EAAG6C,MAAQ7C,EAAG6C,KAAKG,YAG/ChD,GAAG6C,KAAKC,MAAQ,aAChB9C,EAAG6C,KAAKG,aAAe,aAEvB5J,KAAKiI,YAAcrB,EAAGqB,YACtBjI,KAAK8H,MAAQ,GACb9H,KAAK6J,YAAqC,kBAAhBjD,GAAG6C,KAAKK,IAAqBlD,EAAG6C,KAAKK,IAAM,GACrE7J,KAAKiJ,OAAStC,EAAGsC,MAGjB,IAAIa,GAAM,EACV,IAAIC,IACAC,gBAAgB,EAChBC,eAAgB,EAChBC,UAAW,GACXC,YAAa,GAGjBvD,KACAjG,OAAOwI,MAAM,6BACbxI,OAAOwI,MAAM,kBAAmBxC,EAAGK,YAGnCS,SAAS2C,OAAOd,EAAQ3C,GACpBlE,IAAKxC,eACLoK,kBACIxC,MAAO,MAIflH,OAAOwI,MAAM,WAAYG,EAGzB,IAAI5C,GAAW,GAAIe,UAAS6C,SAAShB,EAsdrC,OApdA3I,QAAOwI,MAAM,iCAGbzC,EAAS6D,KAAK,OAAQ,SAAS/B,EAAIgC,GAC/B7J,OAAOwI,MAAM,wBAKTxC,EAAG8D,iBACH9C,IAEJA,MAGJhH,OAAOwI,MAAM,mBAKbzC,EAAS6D,KAAK,aAAc,SAAS/B,EAAIkC,GACrC/J,OAAOwI,MAAM,6BACb,IAAIwB,GAAanC,EAAGI,WAAaJ,EAAGI,UAAU,aAC9C+B,GAAaA,GAAenC,EAAGK,UAAYL,EAAGK,SAAS8B,WACvDhK,OAAOwI,MAAM,eAAgBwB,GAC7BhK,OAAOwI,MAAM,UAAWuB,GACpBC,GACAC,WAAW,WACPpC,EAAG9E,QACH/C,OAAOwI,MAAM,sBACd,GAQPX,EAAGqC,YAGPlK,OAAOwI,MAAM,yBAObzC,EAAS6D,KAAK,eAAgB,SAAS/B,EAAIC,GACvC9H,OAAOwI,MAAM,gCAEbV,EAAKqC,MAAQrC,EAAKqC,OAAS,EAC3BhB,EAAM,GAEHnD,EAAG8D,iBACF9C,GAGJ,IAAIoD,GAAe,SAASvC,EAAIC,EAAM1G,GAClCgI,EAAaG,WAAY,GAAI3L,OAAOE,SACpC,IAAIuM,EAEAA,GADArE,EAAGgC,UAECd,MAAS9H,KAAK8H,QAId1J,IAAOoK,EAAWC,EAAIC,EAAM1G,GAC5B8F,MAAS9H,KAAK8H,OAItBlH,OAAOwI,MAAM,sCAAuC6B,EAEpD,IAAIC,GAAStE,EAAGsE,MAChB,IAAeC,SAAXD,GAA0C,gBAAXA,GAC/B,IAAK,GAAIE,KAASF,GACVA,EAAO1I,eAAe4I,KACO,kBAAlBF,GAAOE,GACdH,EAAqB,KAAOG,GAASF,EAAOE,GAAO3C,EAAIC,GACvB,gBAAlBwC,GAAOE,KACrBH,EAAqB,KAAOG,GAASF,EAAOE,IAO5D3C,GAAG4C,WACC3I,IAAOxC,eACPoL,WAAa,EACbrE,WAAcsE,IAA4B3E,EAAG4E,cAAgBL,OAC7Db,iBAAoBW,IAK5B,IAAIM,GAA0B,WAC1B,GAAIE,GAAKpC,UAAUC,UAAUrH,aAC7B,QAAIwJ,EAAGC,MAAM,oBAA4C,cAAtBvE,MAAMC,IAAIC,SAA2BoE,EAAGC,MAAM,gBAA+C,YAA7BvE,MAAMC,IAAIuE,GAAG1J,eACrG,GAEA,EAIf,IAAIgF,GAAawB,EAAGI,WAAaJ,EAAGI,UAAU,aAO9C,IANA5B,EAAaA,GAAewB,EAAGK,UAAYL,EAAGK,SAAS7B,WAEvDrG,OAAOwI,MAAM,qBAAqBzC,EAASiF,SAC3ChL,OAAOwI,MAAM,eAAenC,GAGF,UAArBN,EAASiF,SAA4C,UAArBjF,EAASiF,UAAwB3E,EAsElErG,OAAOwI,MAAM,oGAEb4B,EAAavC,EAAIC,EAAM1I,KAAK6J,iBAvE5B,IAAInB,EAAKmD,KAAO5E,GAAcsE,IAC1B3K,OAAOwI,MAAM,4EAEb4B,EAAavC,EAAIC,EAAM1I,KAAK6J,iBACzB,CAIH,GAAIiC,GAAgBnM,aAAaE,QAAQ6I,EAAKK,KAC9C,IAAIgD,GAAY9E,CAChB,IAAI6E,EAAe,CAGfA,EAAgB9L,KAAK2F,UAAUmG,EAC/B,IAAIE,IAAM,GAAKxN,OAAQE,SACvB,IAAIuN,GAASH,EAAcI,MAAQ,CACnC,IAAIC,GAAO,KAKQA,GAAfH,EAAMC,GAEwB,MAA1BH,EAAcM,SACV1D,EAAKmD,OAASC,EAAcO,OAG5B3D,EAAK0D,QAAUN,EAAcM,QAC7B1D,EAAK4D,OAASR,EAAcS,OAC5BxC,EAAM+B,EAAc/B,IAGpBC,EAAaC,gBAAiB,EAC9BD,EAAaE,eAAiB4B,EAAcS,OAGxCT,EAAcS,OAASR,EAAYrD,EAAKmD,OACxCE,EAAYrD,EAAKmD,KAAOC,EAAcS,SAclD5M,aAAaG,WAAW4I,EAAKK,MAGrCiB,EAAaG,WAAY,GAAI3L,OAAOE,UAGpC+J,EAAG4C,WACC3I,IAAOxC,eAAiB,UAAY6L,EACpCT,WAAa,EACbrE,WAAcA,EACduF,kBAAqB,SACrBC,SACIC,cAAiB,WAAa1M,KAAK8H,OAEvCwC,yBAUhB1J,OAAOwI,MAAM,2BAIbzC,EAAS6D,KAAK,iBAAkB,SAAS/B,EAAIC,GACzC9H,OAAO+L,MAAM,kCACb3C,EAAaI,aAAc,GAAI5L,OAAOE,SACtC,IAAIkO,GAAW5C,EAAaI,YAAcJ,EAAaG,SACvD,IAAI0C,GAAenE,EAAK4D,QAAU,CAC9BtC,GAAaC,iBACb4C,EAAenE,EAAK4D,OAAStC,EAAaE,gBAE9CxB,EAAKqC,OAAS8B,EAAeD,EAAW,KAAME,QAAQ,IAAM,IAGhElM,OAAOwI,MAAM,6BAIbzC,EAAS6D,KAAK,gBAAiB,SAAS/B,EAAIC,EAAMqE,GAC9CnM,OAAOwI,MAAM,iCACbxI,OAAOwI,MAAM,SAAUV,GACvB9H,OAAOwI,MAAM,SAAU2D,EACvB,IAAIpK,GAAM3C,KAAK2F,UAAUoH,EAAKC,SAC9BpM,QAAOwI,MAAM,QAASzG,GAEtBoH,EAAMA,EAAMA,EAAM,IAAMpH,EAAIoH,IAAMpH,EAAIoH,GACtC,IAAIkD,GAAWF,EAAKV,MAAQU,EAAKR,MACjC,IAAItF,GAAawB,EAAGI,WAAaJ,EAAGI,UAAU,aAC9C5B,GAAaA,GAAewB,EAAGK,UAAYL,EAAGK,SAAS7B,WACxCA,EAAXgG,IACAxE,EAAG4C,WACC3I,IAAOxC,eAAiB,UAAY+M,IAExCrM,OAAOwI,MAAM,qBAAsBlJ,eAAiB,UAAY+M,IAEpEtN,aAAaC,QAAQ8I,EAAKK,KAAM/I,KAAK0B,eACjCqI,IAAKA,EACLqC,QAAS1D,EAAK0D,QACdC,MAAOU,EAAKV,MACZE,OAAQQ,EAAKR,OACbL,MAAM,GAAK1N,OAAQE,eAI3BkC,OAAOwI,MAAM,4BAIbzC,EAAS6D,KAAK,QAAS,SAAUhB,GAC7B,MAAO,UAASf,EAAIyE,GAChBtM,OAAOuM,MAAM,yBACbvM,OAAOuM,MAAM,QAASD,EACtB,IAAIE,GAAS,EACb,IAAI1E,GAAOwE,EAAIxE,IACf,IAAIA,EAAM,CACN,OAAQwE,EAAInL,MACR,IAAK2F,UAAS2F,OACVD,EAAS,oEACT,MACJ,KAAK1F,UAAS4F,gBACV,GAAI9B,GAAgB/C,EAAGI,WAAaJ,EAAGI,UAAU,gBACjD2C,GAAgBA,GAAkB/C,EAAGK,UAAYL,EAAGK,SAAS0C,cAC7D4B,EAAS,mDAAa5B,EAAgB,sFACtC,MACJ,KAAK9D,UAAS6F,qBACVH,EAAS,gFACT,MACJ,KAAK1F,UAAS8F,WACV,GAAqB,KAAjBN,EAAIF,SAAiB,CAErBI,EAASF,EAAIO,SAAW,4CACxB,OAEJ,GAAIC,GAAW1N,KAAK2F,UAAUuH,EAAIF,SAClC,IAAIW,GAAYD,EAASP,KACzB,QAAQD,EAAI7E,QACR,IAAK,KACD+E,EAAS,wDACT,MACJ,KAAK,KACDA,EAAS,oHACT,MACJ,KAAK,KACDA,EAAS,wGACT,MACJ,KAAK,KACDA,EAAS,gFACT,MACJ,KAAK,KACDA,EAAS,kGACT,MACJ,KAAK,KACDA,EAAS,sCACT,KACIM,EAAW1N,KAAK2F,UAAU+H,EAASP,OACnCQ,EAAYD,EAASP,OAAS,cAChC,MAAOS,GACLD,EAAYD,EAASP,OAAS,cAElC,KACJ,KAAK,KACDC,EAAS,kDACT,MACJ,KAAK,KACDA,EAAS,oHACT,MACJ,SACIA,EAAS,iCAGjBA,EAASA,EAAS,IAAMF,EAAI7E,OAAS,SAAMsF,EAAY,GACvD,MACJ,KAAKjG,UAASmG,eACVT,EAAS,kGACT,MACJ,KAAK1F,UAASoG,cACVV,EAAS,oEACT,MACJ,KAAK1F,UAASqG,SACVX,EAAS,oEACT,MACJ,KAAK1F,UAASsG,WACVZ,EAAS,mGACTzG,EAASsH,SACT,MACJ,SACIb,EAASF,EAAIO,QAAUP,EAAIgB,QAG/B1E,GACAA,EAAef,EAAIyE,EAAKE,GAGhC3E,EAAGqC,YAERtB,IAEH5I,OAAOwI,MAAM,oBAMbzC,EAAS6D,KAAK,eAAgB,SAAUb,GACpC,MAAO,UAASlB,EAAIC,EAAMqE,GACtBnM,OAAOwI,MAAM,gCACbxI,OAAOwI,MAAM,SAAUV,GACvB9H,OAAOwI,MAAM,SAAU2D,EACvB,IAAIoB,GAAY,SAAS1F,EAAIC,EAAMqE,GAC/B,GAAInG,EAAGwH,cAAe,CAGlB,GAAIC,GAAiBrO,KAAKsF,YAC1B+I,GAAerG,KAAK,OAAQpB,EAAGwH,eAAe,GAC9CC,EAAenG,iBAAiB,eAAgB,qCAChDmG,EAAelG,mBAAqB,WAChC,GAAkC,IAA9BkG,EAAejG,WACf,GAA8B,MAA1BiG,EAAehG,OAAgB,CAC/B,GAAIiG,EACJ,KACIA,EAAgBtO,KAAK2F,UAAU0I,EAAe/F,cAChD,MAAOsF,GACL,KAAM,sBAEV,GAAIW,KACJ7G,UAAS2C,OAAOkE,EAAevO,KAAK2F,UAAUoH,GAAOuB,GACjD3E,GACAA,EAAsBlB,EAAIC,EAAM1I,KAAK0B,cAAc6M,QAGvD5H,GAAS6H,QAAQ,SACbnG,OAAQgG,EAAehG,OACvB2E,SAAUqB,EAAe/F,aACzBI,KAAMA,EACN3G,KAAM2F,SAAS8F,cAK/Ba,EAAe9F,KAAK,OAASvI,KAAK2F,UAAUoH,GAAM3O,IAAM,WAAawI,EAAGsC,YACjES,IACPA,EAAsBlB,EAAIC,EAAMqE,GAIxC,IAAIpK,GAAM3C,KAAK2F,UAAUoH,EAAKC,SAS9B,IARAjD,EAAMA,EAAMA,EAAMpH,EAAIoH,IAOtBnJ,OAAOwI,MAAM,QAASW,GAClBA,EAAK,CACL,GAAI3L,GAAM,EACVwC,QAAOwI,MAAM,aAAcxC,EAAGgC,UACzBhC,EAAGgC,WACJxK,EAAMoK,EAAWC,EAAIC,EAAM1I,KAAK6J,aAChCzL,EAAMA,EAAM,QAAU4B,KAAKoF,oBAAoBhH,GAAO,GAG1D,IAAIqQ,GAAQ,UAAYzO,KAAKoF,oBAAoBsD,EAAKK,KAEtDnI,QAAOwI,MAAM,cAAexC,EAAGsE,OAC/B,IAAIA,GAAStE,EAAGsE,OACZwD,EAAQ,GACRC,EAAa,EACjB,IAAexD,SAAXD,GAA0C,gBAAXA,GAC/B,IAAK,GAAIE,KAASF,GACVA,EAAO1I,eAAe4I,KACO,kBAAlBF,GAAOE,GACdsD,EAAQ1O,KAAKoF,oBAAoB8F,EAAOE,GAAO3C,EAAIC,IACnB,gBAAlBwC,GAAOE,KACrBsD,EAAQ1O,KAAKoF,oBAAoB8F,EAAOE,KAE5CuD,GAAc,MAAQvD,EAAQ,IAAMsD,EAKhD,IAAIhM,GAAMxC,eAAiB,WAAawI,EAAKmD,KAAOzN,EAAMqQ,EAAQE,CAElE,IAAI7H,GAAK9G,KAAKK,iBACd,IAAI0H,EACAjB,IAAY,GAANA,GACNiB,EAAO,GAAIZ,OAAM1B,eACjB0B,MAAMC,IAAIwH,QAAUhI,EAAGiI,eAEvB9G,EAAO/H,KAAKsF,aAEhByC,EAAKC,KAAK,OAAQtF,GAAK,GACvBqF,EAAKG,iBAAiB,eAAgB,4BACtCH,EAAKG,iBAAiB,gBAAiB,WAAalI,KAAK8H,MACzD,IAAIK,GAAqB,WAErB,GADAvH,OAAOwI,MAAM,oBAAqBrB,EAAKK,YACf,IAApBL,EAAKK,WAAkB,CACvBzI,aAAaG,WAAW4I,EAAKK,KAC7B,IAAIgE,EACgB,OAAhBhF,EAAKM,QACL0E,EAAOhF,EAAKO,aACZ1H,OAAOwI,MAAM,sBAAuB2D,GACpCoB,EAAU1F,EAAIC,EAAMqE,KAEpBA,GACI1E,OAAQN,EAAKM,OACb2E,SAAUjF,EAAKO,aACfI,KAAMA,EACN3G,KAAM,MAEVnB,OAAOwI,MAAM,oBAAqB2D,GAClCpG,EAAS6H,QAAQ,QAASzB,KAIlCjG,IAAY,GAANA,EACNiB,EAAKyC,KAAK,mBAAoBrC,GAE9BJ,EAAKI,mBAAqBA,EAE9BJ,EAAKQ,KAAKwB,GACVnJ,OAAOwI,MAAM,WAAY1G,OAEzByL,GAAU1F,EAAIC,EAAMqE,EAAKC,YAIlCrD,IAEH/I,OAAOwI,MAAM,2BAGbzC,EAAS8C,OAET7I,OAAOwI,MAAM,0BAEbxI,OAAOwI,MAAM,qBAENzC,GAQX1G,KAAK6O,OAAS,SAAS1Q,GACnB,IAAKA,EACD,OAAO,CAEXA,GAAM2Q,UAAU3Q,EAChB,IAAI8K,GAASjJ,KAAKiJ,MAIlB,OAHwC,MAApCA,EAAO9G,MAAM8G,EAAO7J,OAAS,KAC7B6J,GAAkB,KAEfA,EAAS9K,GASpB6B,KAAK+O,WAAa,SAASpI,EAAIxI,GAC3B,GAAI6Q,GAAOrI,EAAGqI,MAAQ,GAClBC,EAAItI,EAAGsI,GAAK,GACZC,EAAIvI,EAAGuI,GAAK,GACZC,EAAIxI,EAAGwI,GAAK,GACZC,EAASzI,EAAGyI,QAAU,EAC1B,KAAKJ,EACD,OAAO,CAEX,KAAKC,IAAMC,EACP,OAAO,CAGX,IAAIG,GAAW,cAAgBL,CAQ/B,OAPAK,IAAYJ,EAAI,MAAQA,EAAI,GAC5BI,GAAYH,EAAI,MAAQA,EAAI,GAC5BG,GAAYF,EAAI,MAAQA,EAAI,GAC5BE,GAAYD,EAAS,WAAaA,EAAS,GACvCjR,IACAkR,EAAWrP,KAAK6O,OAAO1Q,GAAO,IAAMkR,GAEjCA,GASXrP,KAAKsP,WAAa,SAAS3I,EAAIxI,GAC3B,GAAIoR,GAAc5I,EAAG,gBAAkB,GACnC6I,EAAY7I,EAAG6I,WAAa,GAC5BC,EAAQ9I,EAAG8I,OAAS,GACpBC,EAAU/I,EAAG+I,SAAW,GACxBC,EAAOhJ,EAAGgJ,MAAQ,GAClBC,EAAUjJ,EAAGiJ,SAAW,GACxBC,EAASlJ,EAAGkJ,QAAU,GACtBT,EAASzI,EAAGyI,QAAU,GACtBU,EAAOnJ,EAAGmJ,MAAQ,EAGtB,IAAIT,GAAW,YAef,OAbAA,IAAYE,EAAc,eAAiB,GAC3CF,GAAYG,EAAY,cAAgBA,EAAY,GACpDH,GAAYI,EAAQ,SAAW,GAC/BJ,GAAYK,EAAU,YAAcA,EAAU,GAC9CL,GAAYO,EAAU,YAAcA,EAAU,GAC9CP,GAAYM,EAAO,SAAWA,EAAO,GACrCN,GAAYQ,EAAS,WAAaA,EAAS,GAC3CR,GAAYD,EAAS,WAAaA,EAAS,GAC3CC,GAAYS,EAAO,SAAWA,EAAO,GAEjC3R,IACAkR,EAAWrP,KAAK6O,OAAO1Q,GAAO,IAAMkR,GAEjCA,GASXrP,KAAK+P,UAAY,SAASpJ,EAAIxI,GAC1B,GAAI6Q,GAAOrI,EAAGqI,IACd,KAAKA,EACD,OAAO,CAGX,IAAIK,GAAW,aAAeL,CAE9B,IAAa,IAATA,EAAY,CACZ,GAAIgB,GAAQrJ,EAAGqJ,OAAS,EACxB,KAAKA,EACD,OAAO,CAEXX,IAAYW,EAAQ,UAAYhQ,KAAKmF,oBAAoB6K,GAAS,OAC/D,CAAA,GAAa,IAAThB,EAcP,OAAO,CAbP,IAAIlJ,GAAOa,EAAGb,KAAOa,EAAGb,KAAO,GAC3BmK,EAAOtJ,EAAGsJ,KAAOtJ,EAAGsJ,KAAO,GAC3BC,EAAWvJ,EAAGuJ,SAAWvJ,EAAGuJ,SAAW,GACvCC,EAAOxJ,EAAGwJ,KAAOxJ,EAAGwJ,KAAO,EAC/B,KAAKrK,EACD,OAAO,CAEXuJ,IAAYvJ,EAAO,SAAW9F,KAAKmF,oBAAoBW,GAAQ,GAC/DuJ,GAAYY,EAAO,SAAWjQ,KAAKmF,oBAAoB8K,GAAQ,GAC/DZ,GAAYa,EAAW,aAAeA,EAAW,GACjDb,GAAYc,EAAO,SAAWnQ,KAAKmF,oBAAoBgL,GAAQ,GAMnE,GAAIC,GAAWzJ,EAAGyJ,UAAY,GAC1BV,EAAU/I,EAAG+I,SAAW,GACxBW,EAAK1J,EAAG0J,IAAM,GACdC,EAAK3J,EAAG2J,IAAM,EAUlB,OARAjB,IAAYe,EAAW,aAAeA,EAAW,GACjDf,GAAYK,EAAU,YAAcA,EAAU,GAC9CL,GAAYgB,EAAK,OAASA,EAAK,GAC/BhB,GAAYiB,EAAK,OAASA,EAAK,GAE3BnS,IACAkR,EAAWrP,KAAK6O,OAAO1Q,GAAO,IAAMkR,GAEjCA,GAQXrP,KAAKuQ,UAAY,SAASpS,GACtB,IAAKA,EACD,OAAO,CAEX,IAAIsE,GAAMzC,KAAK6O,OAAO1Q,GAAO,YAC7B,IAAIqS,GAAMxQ,KAAKqF,YACf,IAAIyH,EACJ,IAAI/M,GAAOC,IAQX,OAPAwQ,GAAIzI,KAAK,MAAOtF,GAAK,GACrB+N,EAAItI,mBAAqB,WACE,IAAnBsI,EAAIrI,YAAmC,MAAfqI,EAAIpI,SAC5B0E,EAAO/M,EAAK2F,UAAU8K,EAAInI,gBAGlCmI,EAAIlI,OACGwE,GAQX9M,KAAKyQ,KAAO,SAAStS,GACjB,IAAKA,EACD,OAAO,CAEX,IAAIsE,GAAMzC,KAAK6O,OAAO1Q,GAAO,OAC7B,IAAIqS,GAAMxQ,KAAKqF,YACf,IAAIyH,EACJ,IAAI/M,GAAOC,IAQX,OAPAwQ,GAAIzI,KAAK,MAAOtF,GAAK,GACrB+N,EAAItI,mBAAqB,WACE,IAAnBsI,EAAIrI,YAAmC,MAAfqI,EAAIpI,SAC5B0E,EAAO/M,EAAK2F,UAAU8K,EAAInI,gBAGlCmI,EAAIlI,OACGwE,GAUX9M,KAAK0Q,IAAM,SAASrP,EAAMlD,GACtB,MAAKA,IAAQkD,EAGA,SAATA,EACOrB,KAAKyQ,KAAKtS,GACD,cAATkD,EACArB,KAAKuQ,UAAUpS,IAEnB,GAPI,GAkBf6B,KAAK2Q,SAAW,SAASC,EAAKzS,GAC1B,GAAI0S,GAAkD,mBAAxCC,OAAO5O,UAAU+D,SAAS7D,KAAKwO,EAC7C,IAAItH,GAAQyH,EAAO1B,EAAW,EAC9B,IAAIwB,EAAS,CACT,IAAK,GAAI3R,GAAI,EAAGqH,EAAMqK,EAAIxR,OAAYmH,EAAJrH,EAASA,IAAK,CAE5C,GADAoK,EAASsH,EAAI1R,IACRoK,EAAO0H,IACR,OAAO,CAEX,QAAQ1H,EAAO0H,KACX,IAAK,YACD3B,GAAYrP,KAAK+P,UAAUzG,GAAU,GACrC,MACJ,KAAK,aACD+F,GAAYrP,KAAK+O,WAAWzF,GAAU,GACtC,MACJ,KAAK,aACD+F,GAAYrP,KAAKsP,WAAWhG,GAAU,GACtC,MACJ,SACIyH,GAAQ,EAGhB,GAAIA,EACA,OAAO,EAGf,GAAI5S,EAAK,CACLkR,EAAWrP,KAAK6O,OAAO1Q,GAAO,IAAMkR,CACpC,IAAIjQ,GAASiQ,EAASjQ,MACa,OAA/BiQ,EAASlN,MAAM/C,EAAS,KACxBiQ,EAAWA,EAASlN,MAAM,EAAG/C,EAAS,IAG9C,MAAOiQ,GAEX,OAAO,GAIf,GAAI4B,OAAQ,GAAInR,WAEhB7B,QAAOgT,MAAQA,MAEfhT,OAAO6B,WAAaA,YAEhBL"} \ No newline at end of file diff --git a/package.json b/package.json index 86d1af47..3f649d13 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "qiniu-js-sdk", "jsName": "qiniu", - "version": "1.0.10-beta", + "version": "1.0.13-beta", "private": false, "scripts": { "start": "node demo/server.js" diff --git a/src/qiniu.js b/src/qiniu.js index c34176b2..033fd695 100644 --- a/src/qiniu.js +++ b/src/qiniu.js @@ -16,6 +16,53 @@ ;(function( global ){ +/** + * Creates new cookie or removes cookie with negative expiration + * @param key The key or identifier for the store + * @param value Contents of the store + * @param exp Expiration - creation defaults to 30 days + */ +function createCookie(key, value, exp) { + var date = new Date(); + date.setTime(date.getTime() + (exp * 24 * 60 * 60 * 1000)); + var expires = "; expires=" + date.toGMTString(); + document.cookie = key + "=" + value + expires + "; path=/"; +} + +/** + * Returns contents of cookie + * @param key The key or identifier for the store + */ +function readCookie(key) { + var nameEQ = key + "="; + var ca = document.cookie.split(';'); + for (var i = 0, max = ca.length; i < max; i++) { + var c = ca[i]; + while (c.charAt(0) === ' ') { + c = c.substring(1, c.length); + } + if (c.indexOf(nameEQ) === 0) { + return c.substring(nameEQ.length, c.length); + } + } + return null; +} + + +if ( !window.localStorage ) { + window.localStorage = { + setItem: function (key, value) { + createCookie(key, value, 30); + }, + getItem: function (key) { + return readCookie(key); + }, + removeItem: function (key) { + createCookie(key, '', -1); + } + }; +} + function QiniuJsSDK() { var that = this; @@ -402,47 +449,7 @@ function QiniuJsSDK() { */ this.uploader = function(op) { - if (op.log_level) { - logger.level = op.log_level; - } - - if (!op.domain) { - throw 'domain setting in options is required!'; - } - - if (!op.browse_button) { - throw 'browse_button setting in options is required!'; - } - - logger.debug("init uploader start"); - - logger.debug("environment: ", mOxie.Env); - - logger.debug("userAgent: ", navigator.userAgent); - - var option = {}; - - // hold the handler from user passed options - var _Error_Handler = op.init && op.init.Error; - var _FileUploaded_Handler = op.init && op.init.FileUploaded; - - // replace the handler for intercept - op.init.Error = function() {}; - op.init.FileUploaded = function() {}; - - that.uptoken_url = op.uptoken_url; - that.token = ''; - that.key_handler = typeof op.init.Key === 'function' ? op.init.Key : ''; - this.domain = op.domain; - // TODO: ctx is global in scope of a uploader instance - // this maybe cause error - var ctx = ''; - var speedCalInfo = { - isResumeUpload: false, - resumeFilesize: 0, - startTime: '', - currentTime: '' - }; + /********** inner function define start **********/ // according the different condition to reset chunk size // and the upload strategy according with the chunk size @@ -455,7 +462,8 @@ function QiniuJsSDK() { var isSpecialSafari = (mOxie.Env.browser === "Safari" && mOxie.Env.version <= 5 && mOxie.Env.os === "Windows" && mOxie.Env.osVersion === "7") || (mOxie.Env.browser === "Safari" && mOxie.Env.os === "iOS" && mOxie.Env.osVersion === "7"); // case IE 9-,chunk_size is not empty and flash is included in runtimes // set op.chunk_size to zero - if (ie && ie <= 9 && op.chunk_size && op.runtimes.indexOf('flash') >= 0) { + //if (ie && ie <= 9 && op.chunk_size && op.runtimes.indexOf('flash') >= 0) { + if (ie && ie <= 9 && op.chunk_size && op.runtimes.indexOf('flash') < 0) { // link: http://www.plupload.com/docs/Frequently-Asked-Questions#when-to-use-chunking-and-when-not // when plupload chunk_size setting is't null ,it cause bug in ie8/9 which runs flash runtimes (not support html5) . op.chunk_size = 0; @@ -478,10 +486,6 @@ function QiniuJsSDK() { // if op.chunk_size set 0 will be cause to direct upload }; - reset_chunk_size(); - logger.debug("invoke reset_chunk_size()"); - logger.debug("op.chunk_size: ", op.chunk_size); - // if op.uptoken has no value // get token from 'uptoken_url' // else @@ -524,6 +528,54 @@ function QiniuJsSDK() { return key; }; + /********** inner function define end **********/ + + if (op.log_level) { + logger.level = op.log_level; + } + + if (!op.domain) { + throw 'domain setting in options is required!'; + } + + if (!op.browse_button) { + throw 'browse_button setting in options is required!'; + } + + logger.debug("init uploader start"); + + logger.debug("environment: ", mOxie.Env); + + logger.debug("userAgent: ", navigator.userAgent); + + var option = {}; + + // hold the handler from user passed options + var _Error_Handler = op.init && op.init.Error; + var _FileUploaded_Handler = op.init && op.init.FileUploaded; + + // replace the handler for intercept + op.init.Error = function() {}; + op.init.FileUploaded = function() {}; + + that.uptoken_url = op.uptoken_url; + that.token = ''; + that.key_handler = typeof op.init.Key === 'function' ? op.init.Key : ''; + this.domain = op.domain; + // TODO: ctx is global in scope of a uploader instance + // this maybe cause error + var ctx = ''; + var speedCalInfo = { + isResumeUpload: false, + resumeFilesize: 0, + startTime: '', + currentTime: '' + }; + + reset_chunk_size(); + logger.debug("invoke reset_chunk_size()"); + logger.debug("op.chunk_size: ", op.chunk_size); + // compose options with user passed options and default setting plupload.extend(option, op, { url: qiniuUploadUrl, @@ -542,6 +594,13 @@ function QiniuJsSDK() { // bind getUpToken to 'Init' event uploader.bind('Init', function(up, params) { logger.debug("Init event activated"); + // if op.get_new_uptoken is not true + // invoke getUptoken when uploader init + // else + // getUptoken everytime before a new file upload + if(!op.get_new_uptoken){ + getUpToken(); + } getUpToken(); }); @@ -657,7 +716,7 @@ function QiniuJsSDK() { if (localFileInfo) { // TODO: although only the html5 runtime will enter this statement // but need uniform way to make convertion between string and json - localFileInfo = JSON.parse(localFileInfo); + localFileInfo = that.parseJSON(localFileInfo); var now = (new Date()).getTime(); var before = localFileInfo.time || 0; var aDay = 24 * 60 * 60 * 1000; // milliseconds of one day @@ -713,7 +772,7 @@ function QiniuJsSDK() { }); } } else { - logger.debug("directUpload because uploader.runtime !== 'html5' || !chunk_size"); + logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"); // direct upload if runtime is not html5 directUpload(up, file, that.key_handler); } @@ -740,7 +799,10 @@ function QiniuJsSDK() { // store the chunk upload info and set next chunk upload url uploader.bind('ChunkUploaded', function(up, file, info) { logger.debug("ChunkUploaded event activated"); + logger.debug("file: ", file); + logger.debug("info: ", info); var res = that.parseJSON(info.response); + logger.debug("res: ", res); // ctx should look like '[chunk01_ctx],[chunk02_ctx],[chunk03_ctx],...' ctx = ctx ? ctx + ',' + res.ctx : res.ctx; var leftSize = info.total - info.offset; @@ -750,8 +812,9 @@ function QiniuJsSDK() { up.setOption({ 'url': qiniuUploadUrl + '/mkblk/' + leftSize }); + logger.debug("up.setOption url: ", qiniuUploadUrl + '/mkblk/' + leftSize); } - localStorage.setItem(file.name, JSON.stringify({ + localStorage.setItem(file.name, that.stringifyJSON({ ctx: ctx, percent: file.percent, total: info.total, @@ -862,7 +925,8 @@ function QiniuJsSDK() { uploader.bind('FileUploaded', (function(_FileUploaded_Handler) { return function(up, file, info) { logger.debug("FileUploaded event activated"); - + logger.debug("file: ", file); + logger.debug("info: ", info); var last_step = function(up, file, info) { if (op.downtoken_url) { // if op.dowontoken_url is not empty @@ -882,7 +946,7 @@ function QiniuJsSDK() { var info_extended = {}; plupload.extend(info_extended, that.parseJSON(info), res_downtoken); if (_FileUploaded_Handler) { - _FileUploaded_Handler(up, file, JSON.stringify(info_extended)); + _FileUploaded_Handler(up, file, that.stringifyJSON(info_extended)); } } else { uploader.trigger('Error', { @@ -908,8 +972,10 @@ function QiniuJsSDK() { // we need request the mkfile to compose all uploaded chunks // else // invalke the last_step + logger.debug("ctx: ", ctx); if (ctx) { var key = ''; + logger.debug("save_key: ", op.save_key); if (!op.save_key) { key = getFileKey(up, file, that.key_handler); key = key ? '/key/' + that.URLSafeBase64Encode(key) : ''; @@ -917,6 +983,7 @@ function QiniuJsSDK() { var fname = '/fname/' + that.URLSafeBase64Encode(file.name); + logger.debug("op.x_vars: ", op.x_vars); var x_vars = op.x_vars, x_val = '', x_vars_url = ''; @@ -934,27 +1001,46 @@ function QiniuJsSDK() { } var url = qiniuUploadUrl + '/mkfile/' + file.size + key + fname + x_vars_url; - var ajax = that.createAjax(); + + var ie = that.detectIEVersion(); + var ajax; + if (ie && ie <= 9) { + ajax = new mOxie.XMLHttpRequest(); + mOxie.Env.swf_url = op.flash_swf_url; + }else{ + ajax = that.createAjax(); + } ajax.open('POST', url, true); ajax.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8'); ajax.setRequestHeader('Authorization', 'UpToken ' + that.token); - ajax.onreadystatechange = function() { + var onreadystatechange = function(){ + logger.debug("ajax.readyState: ", ajax.readyState); if (ajax.readyState === 4) { localStorage.removeItem(file.name); + var info; if (ajax.status === 200) { - var info = ajax.responseText; + info = ajax.responseText; + logger.debug("mkfile is success: ", info); last_step(up, file, info); } else { - uploader.trigger('Error', { + info = { status: ajax.status, response: ajax.responseText, file: file, code: -200 - }); + }; + logger.debug("mkfile is error: ", info); + uploader.trigger('Error', info); } } }; + if (ie && ie <= 9) { + ajax.bind('readystatechange', onreadystatechange); + }else{ + ajax.onreadystatechange = onreadystatechange; + } ajax.send(ctx); + logger.debug("mkfile: ", url); } else { last_step(up, file, info.response); }