Commit 99cd55f4 authored by lvweichao's avatar lvweichao

update: deploy script

parent a36caab5
......@@ -30,4 +30,7 @@ fi
if [ $env == "development" ]
then
pm2 logs $name
echo "{\"pm2-logrotate\":{\"max_size\":\"524288000\",\"interval\":\"7\",\"retain\":\"10\"},\"module-db\":{\"pm2-logrotate\":true}}" > /root/.pm2/module_conf.json
port=8055
pm2 start pm2.json
fi
\ No newline at end of file
......@@ -2,7 +2,7 @@
"apps": [
{
"name": "opwebservice",
"script": "index.js",
"script": "app.js",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"cwd": "/home/worker/opservice.yidianzixun.com/htdocs",
"exec_mode": "cluster",
......
......@@ -3,15 +3,16 @@
{
"name": "opwebservice",
"script": "app.js",
"cwd": "",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"cwd": "/home/worker/opservice.yidianzixun.com/htdocs",
"exec_mode": "cluster",
"instances": 0,
"error_file": "/home/worker/opservice.yidianzixun.com/logs/opwebservice.err.log",
"out_file": "/home/worker/opservice.yidianzixun.com/logs/opwebservice.out.log",
"max_memory_restart": "1G",
"autorestart": true,
"node_args": [],
"args": [],
"env": {
"NODE_ENV": "production"
"NODE_ENV": "production",
"PORT": "8055"
}
}
]
......
a,blockquote,body,code,dd,div,dl,dt,em,fieldset,form,h1,h2,h3,h4,h5,h6,iframe,img,input,label,li,object,ol,p,q,small,span,strong,table,tbody,td,th,tr,ul{margin:0;padding:0;border:0}*{-webkit-box-sizing:border-box;box-sizing:border-box}body,html{-webkit-font-smoothing:antialiased}body,html{font-size:100%}body{line-height:1.5;margin:0 auto;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0)}a,a:active,a:focus,a:hover,a:visited{text-decoration:none}a,img{-webkit-touch-callout:none}img{border:0}li,ol,ul{list-style:none}button,input:focus,textarea:focus{outline:none}input,textarea{-webkit-appearance:none}#loading{position:fixed;top:0;left:0;height:100%;width:100%;background-color:#fff;z-index:1000}#loading,#loading:after{background-position:50%;background-repeat:no-repeat}#loading:after{content:"";display:block;background-image:url(//si1.go2yd.com/get-image/0fOxKQtpE80);position:fixed;background-repeat:no-repeat;z-index:1001;left:50%;top:50%;height:28px;width:140px;margin-left:-70px;margin-top:-25px;background-size:100% 100%}.yidian-night #loading{background-color:#333}.yidian-night #loading:after{background-image:url(//si1.go2yd.com/get-image/0fOxY9asGmm)}#app,#root,body,html{height:100%}body{margin:0}.user-info[data-v-e635a4fa]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.user-name[data-v-e635a4fa]{margin-left:12px;color:#fff}.menu-router{display:inline-block;line-height:60px;width:100%}.header-menu .user-menu{float:right!important;margin-right:20px}.layout{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%}.main{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.setUp{position:absolute;right:20px;-webkit-transform:translate(-50%,25%);-ms-transform:translate(-50%,25%);transform:translate(-50%,25%)}.enterprise_card{padding:50px}.enterprise_card .enterprise_form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.enterprise_card .enterprise_form .formItem{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.enterprise_card .enterprise_form .formButton{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.enterprise_card .enterprise_form .formButton .inquire{margin-right:10px}.audit{padding:50px;padding-bottom:0}.audit .audit_area,.audit .submit_area{margin:20px 0}.audit .button_area{margin-top:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.audit .life_area{margin:20px 0;margin-bottom:50px}.audit .edit_button_area{margin:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.audit thead th{background-color:#add8e6;color:#000}.mgtb20{margin:20px 0}.title{padding:20px}.establish{padding:50px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.establish .el-form{width:50%}.life-no[data-v-566ea21e]{margin:30px}.life-no .search_life[data-v-566ea21e]{width:280px}.life-no-detail[data-v-1da29aa1]{margin:50px}.life-no-detail .titleInfo[data-v-1da29aa1]{margin-top:10px}.life-no-detail .box-card[data-v-1da29aa1]{width:100%}.life-no-detail .accountRoleList[data-v-1da29aa1],.life-no-detail .management[data-v-1da29aa1]{margin-top:20px}.block{margin-top:50px}.form-val{margin-left:20px;width:300px}.form-val.el-input{width:80%}.user[data-v-b0e89f24]{padding:50px}.user .search_life[data-v-b0e89f24]{width:280px}.user .func-btn[data-v-b0e89f24]{float:right}.user-detail[data-v-1b6c6673]{margin:50px}.user-detail .role[data-v-1b6c6673]{margin:10px;font-weight:700}.addRole[data-v-f6d2ea16]{margin:50px}.addRole .back[data-v-f6d2ea16]{margin:20px 0}.creatRole[data-v-27551e6d]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.role_management[data-v-27551e6d]{padding:20px}.role_management .el-button[data-v-27551e6d]{margin:0 2px}.user-detail[data-v-66a7f69f]{margin:50px}.user-detail .role_account_list[data-v-66a7f69f]{padding:10px;color:#909399;background:#fafafa;font-weight:400;line-height:1.5}.user-detail .management[data-v-66a7f69f],.user-detail .tree[data-v-66a7f69f]{margin-top:20px}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="https://static.yidianzixun.com/img/faviconred.ico"><title>运营管理系统</title><link href="/dist/css/chunk-vendors.e35ad216.css" rel="stylesheet"><link href="/dist/css/app.23f69f0d.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 运营管理系统 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/dist/js/chunk-vendors.dcd2bca2.js"></script><script src="/dist/js/app.26d83f12.js"></script></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["enterprise"],{"13be":function(e,t,n){"use strict";n.r(t);var o=n("7a23"),c=Object(o["m"])(" 没有权限! ");function r(e,t,n,r,a,i){var u=Object(o["N"])("layout");return Object(o["E"])(),Object(o["j"])("div",null,[Object(o["n"])(u,null,{default:Object(o["cb"])((function(){return[c]})),_:1})])}var a=n("3ab0"),i={components:{Layout:a["a"]}};i.render=r;t["default"]=i},"26ad":function(e,t,n){"use strict";n.r(t);var o=n("7a23"),c=Object(o["m"])(" 页面不存在! ");function r(e,t,n,r,a,i){var u=Object(o["N"])("layout");return Object(o["E"])(),Object(o["j"])("div",null,[Object(o["n"])(u,null,{default:Object(o["cb"])((function(){return[c]})),_:1})])}var a=n("3ab0"),i={components:{Layout:a["a"]}};i.render=r;t["default"]=i},"358c":function(e,t){t.KS3_CONST={AccessKeyID:"AKLTTpZx6fNBQsGSKe5chqHdXA",AccessKeySecret:"OG9Bk93RUHwaH71U9K+OtWkvx44AdMheywjFlifILikvh96jNGgznJm+AyR5l4wPhw==",DOMAIN:"ks3-cn-beijing.ksyun.com"}},"80ad":function(e,t,n){"use strict";n.r(t);var o=n("7a23"),c=Object(o["gb"])("data-v-445e1d37");Object(o["H"])("data-v-445e1d37");var r=Object(o["m"])("点击上传"),a=Object(o["n"])("div",{class:"el-upload__tip"},"只能上传 jpg/png 文件,且不超过 500kb",-1),i=Object(o["n"])("input",{type:"file",id:"imgFile2"},null,-1);Object(o["F"])();var u=c((function(e,t,n,u,l,s){var d=Object(o["N"])("el-button"),p=Object(o["N"])("el-upload");return Object(o["E"])(),Object(o["j"])(o["b"],null,[Object(o["n"])(p,{class:"upload-demo",action:"https://jsonplaceholder.typicode.com/posts/","on-preview":s.handlePreview,"on-remove":s.handleRemove,"before-remove":e.beforeRemove,multiple:"",limit:3,"on-exceed":s.handleExceed,"file-list":l.fileList},{tip:c((function(){return[a]})),default:c((function(){return[Object(o["n"])(d,{size:"small",type:"primary"},{default:c((function(){return[r]})),_:1})]})),_:1},8,["on-preview","on-remove","before-remove","on-exceed","file-list"]),i,Object(o["n"])("button",{onClick:t[1]||(t[1]=function(){return s.handleclick&&s.handleclick.apply(s,arguments)})},"Put上传")],64)}));n("a4d3"),n("e01a"),n("d3b7"),n("d28b"),n("3ca3"),n("ddb0");function l(e){return l="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}n("99af");var s=n("1da1"),d=(n("96cf"),n("b775"));function p(){return f.apply(this,arguments)}function f(){return f=Object(s["a"])(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,d["a"].get("/api/v1/image/get_ks3_config");case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)}))),f.apply(this,arguments)}var b=n("358c");function m(e){return j.apply(this,arguments)}function j(){return j=Object(s["a"])(regeneratorRuntime.mark((function e(t){var n,o,c,r,a,i,u,l,s;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,p();case 2:return n=e.sent,o=n.bucket,c=n.objectId,r=n.policy,a=n.signature,i="https:"===window.location.protocol?"https":"http",u="".concat(i,"://").concat(b["KS3_CONST"].DOMAIN,"/").concat(o),l=new FormData,l.append("acl","public-read"),l.append("key",c),l.append("signature",a),l.append("KSSAccessKeyId",b["KS3_CONST"].AccessKeyID),l.append("policy",r),l.append("file",t),console.log("ksOssUpload url::",u),e.next=19,Object(d["a"])({url:u,method:"post",data:l,withCredentials:!1}).then((function(e){console.log("ksOssUpload res::",e)}));case 19:return s=e.sent,e.abrupt("return",s);case 21:case"end":return e.stop()}}),e)}))),j.apply(this,arguments)}var h={data:function(){return{fileList:[{name:"food.jpeg",url:"https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100"},{name:"food2.jpeg",url:"https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100"}]}},beforeMount:function(){},methods:{handleclick:function(){var e=document.getElementById("imgFile2").files[0];console.log(33334444,e)},handleRemove:function(e,t){console.log(e,t)},handlePreview:function(e){var t=e.raw;console.log("handlePreview:::",e,"undefined"===typeof File?"undefined":l(File)),console.log(222,t),m(t)},handleExceed:function(e,t){this.$message.warning("当前限制选择 3 个文件,本次选择了 ".concat(e.length," 个文件,共选择了 ").concat(e.length+t.length," 个文件"))}}};h.render=u,h.__scopeId="data-v-445e1d37";t["default"]=h}}]);
//# sourceMappingURL=enterprise.0c91af0c.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///./src/pages/Catch/forbidden.vue","webpack:///./src/pages/Catch/forbidden.vue?15ac","webpack:///./src/pages/Catch/notFound.vue","webpack:///./src/pages/Catch/notFound.vue?058b","webpack:///./src/config/constant.js","webpack:///./src/pages/DemoImageUpload/index.vue","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./src/service/image.js","webpack:///./src/service/ks3Image.js","webpack:///./src/pages/DemoImageUpload/index.vue?8f5c"],"names":["components","Layout","render","exports","KS3_CONST","AccessKeyID","AccessKeySecret","DOMAIN","class","type","id","action","on-preview","handlePreview","on-remove","handleRemove","before-remove","beforeRemove","multiple","limit","on-exceed","handleExceed","file-list","fileList","tip","size","handleclick","_typeof","obj","Symbol","iterator","constructor","prototype","getKs3Config","axios","get","res","ksOssUpload","file","bucket","objectId","policy","signature","protocal","window","location","protocol","uploadURL","formData","FormData","append","console","log","url","method","data","withCredentials","then","name","beforeMount","methods","document","getElementById","files","raw","File","this","$message","warning","length","__scopeId"],"mappings":"sJAEY,W,+EADV,eAEM,YADJ,eAAwB,Q,yBAAhB,iBAAO,C,8BAMJ,GACbA,WAAY,CACVC,OAAA,SCPJ,EAAOC,OAASA,EAED,gB,4ECHH,Y,+EADV,eAIM,YAHJ,eAES,Q,yBAFD,iBAER,C,8BAMa,GACbF,WAAY,CACVC,OAAA,SCTN,EAAOC,OAASA,EAED,gB,qBCLfC,EAAQC,UAAY,CAClBC,YAAa,6BACbC,gBAAiB,uEACjBC,OAAQ,6B,uJCWiC,Q,EAErC,eAA4D,OAAvDC,MAAM,kBAAiB,8BAA0B,G,EAI1D,eAAiC,SAA1BC,KAAK,OAAOC,GAAG,Y,6KAjBtB,eAeY,GAdVF,MAAM,cACNG,OAAO,8CACNC,aAAY,EAAAC,cACZC,YAAW,EAAAC,aACXC,gBAAe,EAAAC,aAChBC,SAAA,GACCC,MAAO,EACPC,YAAW,EAAAC,aACXC,YAAW,EAAAC,U,CAGDC,IAAG,GACZ,iBAA4D,CAA5D,M,WAFF,iBAAuD,CAAvD,eAAuD,GAA5CC,KAAK,QAAQhB,KAAK,W,YAAU,iBAAI,C,2FAM7C,EACA,eAA2C,UAAlC,QAAK,8BAAE,EAAAiB,aAAA,EAAAA,YAAA,sBAAa,U,mECrBhB,SAASC,EAAQC,GAa9B,OATED,EADoB,oBAAXE,QAAoD,kBAApBA,OAAOC,SACtC,SAAiBF,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAItHD,EAAQC,G,kDCWV,SAAeK,IAAtB,+B,8DAAO,oHACaC,OAAMC,IAAI,gCADvB,cACCC,EADD,yBAEEA,GAFF,2C,wCCVA,SAAeC,EAAtB,kC,8DAAO,WAA2BC,GAA3B,uHACiDL,IADjD,uBACGM,EADH,EACGA,OAAQC,EADX,EACWA,SAAUC,EADrB,EACqBA,OAAQC,EAD7B,EAC6BA,UAE5BC,EAAwC,WAA7BC,OAAOC,SAASC,SAAwB,QAAU,OAC7DC,EAJD,UAIgBJ,EAJhB,cAI8BvC,eAAUG,OAJxC,YAIkDgC,GAIjDS,EAAW,IAAIC,SACrBD,EAASE,OAAO,MAAO,eACvBF,EAASE,OAAO,MAAOV,GACvBQ,EAASE,OAAO,YAAaR,GAC7BM,EAASE,OAAO,iBAAkB9C,eAAUC,aAC5C2C,EAASE,OAAO,SAAUT,GAC1BO,EAASE,OAAO,OAAQZ,GACxBa,QAAQC,IAAI,oBAAqBL,GAf5B,UAgBab,eAAM,CAAEmB,IAAKN,EAAWO,OAAQ,OAAQC,KAAMP,EAAUQ,iBAAiB,IAASC,MAAK,SAAArB,GACvGe,QAAQC,IAAI,oBAAqBhB,MAjB9B,eAgBCA,EAhBD,yBAmBEA,GAnBF,4C,wBHcQ,OACbmB,KADa,WAEX,MAAO,CACLhC,SAAU,CAAC,CAACmC,KAAM,YAAaL,IAAK,gIAAiI,CAACK,KAAM,aAAcL,IAAK,mIAGnMM,YANa,aAQbC,QAAS,CACPlC,YADO,WAEL,IAAIY,EAAOuB,SAASC,eAAe,YAAYC,MAAM,GAErDZ,QAAQC,IAAI,SAAUd,IAExBvB,aANO,SAMMuB,EAAMf,GACjB4B,QAAQC,IAAId,EAAMf,IAEpBV,cATO,SASOyB,GACZ,IAAQ0B,EAAQ1B,EAAR0B,IACRb,QAAQC,IAAI,mBAAoBd,EAAhC,qBAA6C2B,KAA7C,cAA6CA,OAE7Cd,QAAQC,IAAI,IAAKY,GAEjB3B,EAAY2B,IAEd3C,aAjBO,SAiBM0C,EAAOxC,GAClB2C,KAAKC,SAASC,QAAd,6BAA4CL,EAAMM,OAAlD,qBAAqEN,EAAMM,OAAS9C,EAAS8C,OAA7F,YInDN,EAAOnE,OAASA,EAChB,EAAOoE,UAAY,kBAEJ","file":"js/enterprise.0c91af0c.js","sourcesContent":["<template>\n <div>\n <layout> 没有权限! </layout>\n </div>\n</template>\n\n<script>\nimport Layout from '@/layouts';\nexport default {\n components: {\n Layout,\n },\n};\n</script>\n\n<style lang=\"less\">\n</style>\n","import { render } from \"./forbidden.vue?vue&type=template&id=55e10778\"\nimport script from \"./forbidden.vue?vue&type=script&lang=js\"\nexport * from \"./forbidden.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","<template>\n <div>\n <layout>\n 页面不存在!\n </layout>\n </div>\n</template>\n\n<script>\n import Layout from '@/layouts';\n export default {\n components: {\n Layout,\n },\n };\n</script>\n\n<style lang=\"less\">\n</style>\n","import { render } from \"./notFound.vue?vue&type=template&id=1d928b4d\"\nimport script from \"./notFound.vue?vue&type=script&lang=js\"\nexport * from \"./notFound.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","exports.KS3_CONST = {\n AccessKeyID: 'AKLTTpZx6fNBQsGSKe5chqHdXA',\n AccessKeySecret: 'OG9Bk93RUHwaH71U9K+OtWkvx44AdMheywjFlifILikvh96jNGgznJm+AyR5l4wPhw==',\n DOMAIN: 'ks3-cn-beijing.ksyun.com'\n}","\n<template>\n\n <el-upload\n class=\"upload-demo\"\n action=\"https://jsonplaceholder.typicode.com/posts/\"\n :on-preview=\"handlePreview\"\n :on-remove=\"handleRemove\"\n :before-remove=\"beforeRemove\"\n multiple\n :limit=\"3\"\n :on-exceed=\"handleExceed\"\n :file-list=\"fileList\"\n >\n <el-button size=\"small\" type=\"primary\">点击上传</el-button>\n <template #tip>\n <div class=\"el-upload__tip\">只能上传 jpg/png 文件,且不超过 500kb</div>\n </template>\n </el-upload>\n\n <input type=\"file\" id=\"imgFile2\">\n <button @click=\"handleclick\">Put上传</button>\n</template>\n\n<script>\nimport { ksOssUpload } from '@/service/ks3Image'\n// import { uploadImageToKs3 } from '@/service/image'\n\nexport default {\n data () {\n return {\n fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]\n }\n },\n beforeMount() {\n },\n methods: {\n handleclick() {\n var file = document.getElementById('imgFile2').files[0];\n debugger;\n console.log(33334444, file);\n },\n handleRemove(file, fileList) {\n console.log(file, fileList);\n },\n handlePreview(file) {\n const { raw } = file;\n console.log('handlePreview:::', file, typeof File);\n\n console.log(222, raw)\n // uploadImageToKs3(raw)\n ksOssUpload(raw)\n },\n handleExceed(files, fileList) {\n this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);\n },\n // beforeRemove(file, fileList) {\n // return this.$confirm(`确定移除 ${ file.name }?`);\n // },\n }\n}\n</script>\n<style lang=\"less\" scoped>\n</style>\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import axios from '../utils/request';\n\nexport async function getImgId() {\n const res = await axios.get(\"/api/v1/image/get_image_id\")\n return res;\n}\n\nexport async function getImgBucket() {\n const res = await axios.get(\"/api/v1/image/get_bucket\")\n return res;\n}\n\nexport async function getImgToken() {\n const res = await axios.get(\"/api/v1/image/get_token\")\n return res;\n}\n\nexport async function uploadImageToKs3(file) {\n const formData = new FormData();\n formData.append(\"file\", file);\n const res = await axios.post(\"/api/v1/image/upload_ks3_image\", formData)\n return res;\n}\n\nexport async function getKs3Config() {\n const res = await axios.get(\"/api/v1/image/get_ks3_config\")\n return res;\n}","import { getKs3Config } from \"@/service/image\";\nimport { KS3_CONST } from \"@/config/constant\";\nimport axios from '../utils/request';\n\n// async function getRemoteConfig() {\n// const imgId = await getImgId();\n// const bucket = await getImgBucket();\n// return {imgId, bucket}\n// }\n// const protocal = window.location.protocol === 'https:' ? 'https' : 'http';\n// const { imgId, bucket } = await getRemoteConfig();\n\n\n\nexport async function ksOssUpload(file) {\n const { bucket, objectId, policy, signature } = await getKs3Config();\n\n const protocal = window.location.protocol === 'https:' ? 'https' : 'http';\n const uploadURL = `${protocal}://${KS3_CONST.DOMAIN}/${bucket}`;\n // return new Promise((resolve, reject) => {\n // CommonServer.getKsOssSign().then(res => {\n // const { accessid, policy, signature } = res\n const formData = new FormData()\n formData.append('acl', 'public-read')\n formData.append('key', objectId)\n formData.append('signature', signature)\n formData.append('KSSAccessKeyId', KS3_CONST.AccessKeyID)\n formData.append('policy', policy)\n formData.append('file', file)\n console.log('ksOssUpload url::', uploadURL)\n const res = await axios({ url: uploadURL, method: 'post', data: formData, withCredentials: false }).then(res => {\n console.log('ksOssUpload res::', res)\n })\n return res;\n}","import { render } from \"./index.vue?vue&type=template&id=445e1d37&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nscript.render = render\nscript.__scopeId = \"data-v-445e1d37\"\n\nexport default script"],"sourceRoot":""}
\ No newline at end of file
(function KS3JsSDK (win) {
var ks3FileUploader = function(ks3PostOptions, pluploadOptions){
this.defaultKS3Options = {
KSSAccessKeyId: "",
policy: "", //请求中用于描述获准行为的安全策略。没有安全策略的请求被认为是匿名请求,只能访问公共可写空间。
signature: "", //根据Access Key Secret和policy计算的签名信息,KS3验证该签名信息从而验证该Post请求的合法性。
bucket_name: "", //上传的空间名
key: "", //被上传键值的名称。如果用户想要使用文件名作为键值,可以使用${filename} 变量。例如:如果用户想要上传文件local.jpg,需要指明specify /user/betty/${filename},那么键值就会为/user/betty/local.jpg。
acl: "private", //上传文件访问权限,有效值: private | public-read
uploadDomain: "", //上传域名,http://destination-bucket.kss.ksyun.com 或者 http://kssws.ks-cdn.com/destination-bucket
autoStart: false, //是否在文件添加完毕后自动上传
onInitCallBack: function(){}, //上传初始化时调用的回调函数
onErrorCallBack: function(){}, //发生错误时调用的回调函数
onFilesAddedCallBack: function(){}, //文件添加到浏览器时调用的回调函数
onBeforeUploadCallBack: function(){}, //文件上传之前时调用的回调函数
onStartUploadFileCallBack: function(){}, //文件开始上传时调用的回调函数
onUploadProgressCallBack: function(){}, //上传进度时调用的回调函数
onFileUploadedCallBack: function(){}, //文件上传完成时调用的回调函数
onUploadCompleteCallBack: function(){} //所有上传完成时调用的回调函数
};
if (ks3PostOptions){
//用ks3PostOptions覆盖 defaultKS3Options
plupload.extend(this.defaultKS3Options, ks3PostOptions);
}
var multipartParams = {};
if (this.defaultKS3Options.signature&&this.defaultKS3Options.policy){
multipartParams = {
"key": this.defaultKS3Options.key,
"acl": this.defaultKS3Options.acl,
"signature" : this.defaultKS3Options.signature,
"KSSAccessKeyId": this.defaultKS3Options.KSSAccessKeyId,
"policy": this.defaultKS3Options.policy
,'Cache-Control':this.defaultKS3Options['Cache-Control']
,'Expires': this.defaultKS3Options['Expires']
,'Content-Disposition': this.defaultKS3Options['Content-Disposition']
,'Content-Encoding': this.defaultKS3Options['Content-Encoding']
,'Content-Type': this.defaultKS3Options['Content-Type']
,'Content-Encoding': this.defaultKS3Options['Content-Encoding']
}
} else {
multipartParams = {
"key": this.defaultKS3Options.key,
"acl": this.defaultKS3Options.acl,
"KSSAccessKeyId": this.defaultKS3Options.KSSAccessKeyId
}
}
for(var prop in this.defaultKS3Options) {
if(typeof this.defaultKS3Options[prop] == 'string' && prop.indexOf('x-kss-meta-') !== -1 || prop == "x-kss-newfilename-in-body") {
multipartParams[prop] = this.defaultKS3Options[prop];
}
}
this.defaultPluploadOptions = {
runtimes : 'html5,flash,silverlight,html4', //上传模式,依次退化;
url: this.defaultKS3Options.uploadDomain,
browse_button: 'browse', //触发对话框的DOM元素自身或者其ID
flash_swf_url : 'js/Moxie.swf', //Flash组件的相对路径
silverlight_xap_url : 'js/Moxie.xap', //Silverlight组件的相对路径;
drop_element: undefined, //触发拖动上传的元素或者其ID
multipart: true,
multipart_params: multipartParams
};
if (pluploadOptions){
plupload.extend(this.defaultPluploadOptions, pluploadOptions);
}
this.uploader = new plupload.Uploader(this.defaultPluploadOptions);
this.uploader.bind("Init", this.onInit, this);
this.uploader.bind("Error", this.onUploadError, this);
this.uploader.init();
this.uploader.bind("FilesAdded", this.onFilesAdded, this)
this.uploader.bind("BeforeUpload", this.onBeforeUpload, this)
this.uploader.bind("UploadFile", this.onStartUploadFile, this)
this.uploader.bind("UploadProgress", this.onUploadProgress, this)
this.uploader.bind("FileUploaded", this.onFileUploaded, this)
};
ks3FileUploader.prototype.onInit = function(uploader, obj){
this.defaultKS3Options.onInitCallBack&&
this.defaultKS3Options.onInitCallBack.apply(this, [uploader, obj]);
};
ks3FileUploader.prototype.onUploadError = function(uploader, obj) {
this.defaultKS3Options.onErrorCallBack&&
this.defaultKS3Options.onErrorCallBack.apply(this, [uploader, obj]);
};
ks3FileUploader.prototype.onFilesAdded = function(uploader, obj) {
if (this.defaultKS3Options.autoStart)
this.uploader.start();
this.defaultKS3Options.onFilesAddedCallBack&&
this.defaultKS3Options.onFilesAddedCallBack.apply(this, [uploader, obj]);
};
ks3FileUploader.prototype.onBeforeUpload = function(uploader, obj) {
this.defaultKS3Options.onBeforeUploadCallBack&&
this.defaultKS3Options.onBeforeUploadCallBack.apply(this, [uploader, obj]);
};
ks3FileUploader.prototype.onStartUploadFile = function(uploader, obj) {
this.defaultKS3Options.onStartUploadFileCallBack&&
this.defaultKS3Options.onStartUploadFileCallBack.apply(this, [uploader, obj]);
};
ks3FileUploader.prototype.onUploadProgress = function(uploader, obj) {
this.defaultKS3Options.onUploadProgressCallBack&&
this.defaultKS3Options.onUploadProgressCallBack.apply(this, [uploader, obj]);
};
ks3FileUploader.prototype.onFileUploaded = function(uploader, obj, resObj) {
this.defaultKS3Options.onFileUploadedCallBack&&
this.defaultKS3Options.onFileUploadedCallBack.apply(this, [uploader, obj, resObj]);
};
ks3FileUploader.prototype.onUploadComplete = function(uploader, obj) {
this.defaultKS3Options.onUploadCompleteCallBack&&
this.defaultKS3Options.onUploadCompleteCallBack.apply(this, [uploader, obj]);
};
return win.ks3FileUploader = ks3FileUploader;
})(window);
//create namespace
var Ks3 = {};
/**
* 给url添加请求参数
* @param url
* @param obj
* @returns {string} 带请求参数的url
*/
Ks3.addURLParam = function(url, obj) {
url += url.indexOf("?") == -1 ? "?" : "";
var ret = [];
for(var key in obj){
key = encodeURIComponent(key);
var value = obj[key];
if(value && Object.prototype.toString.call(value) == '[object String]'){
ret.push(key + '=' + encodeURIComponent(value));
}
}
return url + ret.join('&');
}
/**
* Changes XML DOM to JSON (xml 不带属性)
* @param xml
* @returns {{}} js对象
*/
Ks3.xmlToJson = function (xml) {
// Create the return object
var obj = {};
if (xml.nodeType == Node.TEXT_NODE) { // text
obj = xml.nodeValue;
}
// do children
if (xml.hasChildNodes()) {
for(var i = 0; i < xml.childNodes.length; i++) {
var item = xml.childNodes.item(i);
var nodeName = item.nodeName;
if (typeof(obj[nodeName]) == "undefined") {
if( nodeName === '#text'){
obj = item.nodeValue;
}else{
obj[nodeName] = Ks3.xmlToJson(item);
}
} else {//同级同标签转化为数组
if (typeof(obj[nodeName].length) == "undefined") {
var old = obj[nodeName];
obj[nodeName] = [];
obj[nodeName].push(old);
}
obj[nodeName].push(Ks3.xmlToJson(item));
}
}
}
return obj;
};
/*基于Javascript的Base64加解密算法*/
Ks3.Base64 = {
encTable :[ /*Base64编码表*/
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O' ,'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9', '+', '/'
],
decTable:[ /*Base64解码表*/
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 62, -1, -1, -1, 63, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, -1, -1,
-1, -1, -1, -1, -1, 00, 01, 02, 03, 04,
05, 06, 07, 08, 09, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, -1, -1, -1, -1, -1, -1, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, -1, -1, -1, -1, -1
],
encUTF8: function(str) { /*将任意字符串按UTF8编码*/
var code, res =[], len =str.length;
var byte1, byte2, byte3, byte4, byte5, byte6;
for (var i = 0; i < len; i++) {
//Unicode码:按范围确定字节数
code = str.charCodeAt(i);
//单字节ascii字符:U+00000000 – U+0000007F 0xxxxxxx
if (code > 0x0000 && code <= 0x007F) res.push(code);
//双字节字符:U+00000080 – U+000007FF 110xxxxx 10xxxxxx
else if (code >= 0x0080 && code <= 0x07FF) {
byte1 = 0xC0 | ((code >> 6) & 0x1F);
byte2 = 0x80 | (code & 0x3F);
res.push(byte1, byte2);
}
//三字节字符:U+00000800 – U+0000FFFF 1110xxxx 10xxxxxx 10xxxxxx
else if (code >= 0x0800 && code <= 0xFFFF) {
byte1 = 0xE0 | ((code >> 12) & 0x0F);
byte2 = 0x80 | ((code >> 6) & 0x3F);
byte3 = 0x80 | (code & 0x3F);
res.push(byte1, byte2, byte3);
}
//四字节字符:U+00010000 – U+001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
else if (code >= 0x00010000 && code <= 0x001FFFFF) {
byte1 =0xF0 | ((code>>18) & 0x07);
byte2 =0x80 | ((code>>12) & 0x3F);
byte3 =0x80 | ((code>>6) & 0x3F);
byte4 =0x80 | (code & 0x3F);
res.push(byte1, byte2, byte3, byte4);
}
//五字节字符:U+00200000 – U+03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
else if (code >= 0x00200000 && code <= 0x03FFFFFF) {
byte1 =0xF0 | ((code>>24) & 0x03);
byte2 =0xF0 | ((code>>18) & 0x3F);
byte3 =0x80 | ((code>>12) & 0x3F);
byte4 =0x80 | ((code>>6) & 0x3F);
byte5 =0x80 | (code & 0x3F);
res.push(byte1, byte2, byte3, byte4, byte5);
}
//六字节字符:U+04000000 – U+7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
else if (code >= 0x04000000 && code <= 0x7FFFFFFF) {
byte1 =0xF0 | ((code>>30) & 0x01);
byte2 =0xF0 | ((code>>24) & 0x3F);
byte3 =0xF0 | ((code>>18) & 0x3F);
byte4 =0x80 | ((code>>12) & 0x3F);
byte5 =0x80 | ((code>>6) & 0x3F);
byte6 =0x80 | (code & 0x3F);
res.push(byte1, byte2, byte3, byte4, byte5, byte6);
}
}
return res;
},
encode: function(str) {
/**
* 将任意字符串用Base64加密
* str:要加密的字符串
* utf8编码格式
*/
if (!str) return '';
var bytes = this.encUTF8(str);
var i = 0, len = bytes.length, res = [];
var c1, c2, c3;
while (i < len) {
c1 = bytes[i++] & 0xFF;
res.push(this.encTable[c1 >> 2]);
//结尾剩一个字节补2个=
if (i == len) {
res.push(this.encTable[(c1 & 0x03) << 4], '==');
break;
}
c2 = bytes[i++];
//结尾剩两个字节补1个=
if (i == len) {
res.push(this.encTable[((c1 & 0x03) << 4) | ((c2 >> 4) & 0x0F)]);
res.push(this.encTable[(c2 & 0x0F) << 2], '=');
break;
}
c3 = bytes[i++];
res.push(this.encTable[((c1 & 0x3) << 4) | ((c2 >> 4) & 0x0F)]);
res.push(this.encTable[((c2 & 0x0F) << 2) | ((c3 & 0xC0) >> 6)]);
res.push(this.encTable[c3 & 0x3F]);
}
return res.join('');
}
};
Ks3.chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
Ks3.b64pad = "="; /* base-64 pad character. "=" for strict RFC compliance */
/*
* //使用hmac_sha1算法计算字符串的签名
* return base-64 encoded strings
*/
Ks3.b64_hmac_sha1 = function(key, data) {
return Ks3.binb2b64(Ks3.core_hmac_sha1(key, data));
}
/*
* Calculate the HMAC-SHA1 of a key and some data
*/
Ks3.core_hmac_sha1 = function(key, data)
{
var bkey = Ks3.str2binb(key);
if(bkey.length > 16) bkey = Ks3.core_sha1(bkey, key.length * Ks3.chrsz);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = Ks3.core_sha1(ipad.concat(Ks3.str2binb(data)), 512 + data.length * Ks3.chrsz);
return Ks3.core_sha1(opad.concat(hash), 512 + 160);
}
/*
* Convert an array of big-endian words to a base-64 string
*/
Ks3.binb2b64 = function(binarray)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var str = "";
for(var i = 0; i < binarray.length * 4; i += 3)
{
var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
| (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
| ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > binarray.length * 32) str += Ks3.b64pad;
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
}
}
return str;
}
/*
* Convert an 8-bit or 16-bit string to an array of big-endian words
* In 8-bit function, characters >255 have their hi-byte silently ignored.
*/
Ks3.str2binb = function(str)
{
var bin = Array();
var mask = (1 << Ks3.chrsz) - 1;
for(var i = 0; i < str.length * Ks3.chrsz; i += Ks3.chrsz)
bin[i>>5] |= (str.charCodeAt(i / Ks3.chrsz) & mask) << (32 - Ks3.chrsz - i%32);
return bin;
}
/*
* Calculate the SHA-1 of an array of big-endian words, and a bit length
*/
Ks3.core_sha1 = function(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << (24 - len % 32);
x[((len + 64 >> 9) << 4) + 15] = len;
var w = Array(80);
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
var e = -1009589776;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
var olde = e;
for(var j = 0; j < 80; j++)
{
if(j < 16) w[j] = x[i + j];
else w[j] = Ks3.rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
var t = Ks3.safe_add(Ks3.safe_add(Ks3.rol(a, 5), Ks3.sha1_ft(j, b, c, d)),
Ks3.safe_add(Ks3.safe_add(e, w[j]), Ks3.sha1_kt(j)));
e = d;
d = c;
c = Ks3.rol(b, 30);
b = a;
a = t;
}
a = Ks3.safe_add(a, olda);
b = Ks3.safe_add(b, oldb);
c = Ks3.safe_add(c, oldc);
d = Ks3.safe_add(d, oldd);
e = Ks3.safe_add(e, olde);
}
return Array(a, b, c, d, e);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
Ks3.safe_add =function(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
Ks3.rol = function(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
/*
* Perform the appropriate triplet combination function for the current
* iteration
*/
Ks3.sha1_ft = function(t, b, c, d)
{
if(t < 20) return (b & c) | ((~b) & d);
if(t < 40) return b ^ c ^ d;
if(t < 60) return (b & c) | (b & d) | (c & d);
return b ^ c ^ d;
}
/*
* Determine the appropriate additive constant for the current iteration
*/
Ks3.sha1_kt = function(t)
{
return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
(t < 60) ? -1894007588 : -899497514;
}
/**
* 产生headers
* CanonicalizedKssHeaders
*/
Ks3.generateHeaders =function(header) {
var str = '';
var arr = [];
if(header){
var prefix = 'x-kss';
for(var it in header){
// step1 : 所有`x-kss`的属性都转换为小写
if(it.indexOf(prefix) == 0){
arr.push((it.toLowerCase() +':'+header[it]));
}
}
// step2 : 根据属性名排序
arr.sort();
// step3 : 拼接起来
str = arr.join('\n');
}
return str;
}
/**
* 根据SK和请求生成Signature(用于Authorization头部)
* @param sk secrete key
* @param bucket bucket name
* @param resource ObjectKey[?subResource]
* @param http_verb PUT/GET/POST/DELETE
* @param content_type Content-Type request header
* @param headers headers of request
* @returns {*}
*/
Ks3.generateToken = function (sk, bucket, resource, http_verb, content_type, headers, time_stamp){
// Content-MD5, Content-Type, CanonicalizedKssHeaders都为空
var canonicalized_Kss_Headers = Ks3.generateHeaders(headers);
var canonicalized_Resource = '/' + bucket + '/' + resource;
if (canonicalized_Kss_Headers !== '') {
var string2Sign = http_verb + '\n' + '' + '\n' + content_type + '\n' + time_stamp + '\n' + canonicalized_Kss_Headers + '\n' + canonicalized_Resource;
} else {
var string2Sign = http_verb + '\n' + '' + '\n' + content_type + '\n' + time_stamp + '\n' + canonicalized_Resource;
}
//console.log('string2Sign:' + string2Sign);
var signature = Ks3.b64_hmac_sha1(sk, string2Sign);
//console.log('signature:' + signature);
return signature;
}
/**
* 获取过期时间戳
* @param seconds 多少秒后过期
*/
function getExpires(seconds) {
return Math.round(new Date().getTime()/1000) + seconds;
};
/*
* url endpoints for different regions
*/
Ks3.ENDPOINT = {
HANGZHOU : 'kss.ksyun.com',
AMERICA: 'ks3-us-west-1.ksyun.com',
BEIJING : 'ks3-cn-beijing.ksyun.com',
HONGKONG: 'ks3-cn-hk-1.ksyun.com',
SHANGHAI: 'ks3-cn-shanghai.ksyun.com'
};
Ks3.config = {
AK: '',
SK: '',
protocol:'http',
baseUrl:'',
region: '',
bucket: '',
prefix:'kss',
// 分块上传的最小单位
chunkSize:5*1024*1024,
// 分块上传重试次数
retries:20,
currentUploadId: '',
stopFlag: false // for multipart upload
}
/**
* Get Bucket( List Object) 获取bucket下的objects
* @param bucket : bucket name
* @param url : 如:http://kss.ksyun.com/
* @param cb : callback function
*
* @param {object} params
* {
* Bucket: '', // 非必传
* delimiter: '', //分隔符,用于对一组参数进行分割的字符。
* 'encoding-type': '', //指明请求KS3与KS3响应使用的编码方式。
* maker: '', //指定列举指定空间中对象的起始位置。KS3按照字母排序方式返回结果,将从给定的 marker 开始返回列表。如果相应内容中IsTruncated为true,则可以使用返回的Contents中的最后一个key作为下次list的marker参数
* 'max-keys': 0, //设置响应体中返回的最大记录数(最后实际返回可能小于该值)。默认为1000。如果你想要的结果在1000条以后,你可以设定 marker 的值来调整起始位置。
* prefix: '', //限定响应结果列表使用的前缀
* Signature: '' not required, 请求签名,从服务端获取
* }
*/
Ks3.listObject = function(params, cb) {
var xhr = new XMLHttpRequest();
var listObjectParams = {
delimiter: params['delimiter'],
'encoding-type': params['encoding-type'],
marker: params['marker'],
'max-keys': params['max-keys'],
prefix: params['prefix']
};
var bucketName = params.Bucket || Ks3.config.bucket;
var region = params.region || Ks3.config.region;
if (region ) {
Ks3.config.baseUrl = Ks3.ENDPOINT[region];
}
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName; //元数据获取不要走cdn
url = Ks3.addURLParam(url, listObjectParams);
xhr.overrideMimeType('text/xml'); //兼容火狐
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {
//xml转为json格式方便js读取
cb(Ks3.xmlToJson(xhr.responseXML));
} else {
alert('Request was unsuccessful: ' + xhr.status);
console.log('status: ' + xhr.status);
}
}
};
//在金山云存储控制台(ks3.ksyun.com)中的”空间设置"页面需要设置对应空间(bucket)的CORS配置,允许请求来源(Allow Origin: * )和请求头(Allow Header: * )的GET请求,否则浏览器会报跨域错误
xhr.open('GET', url, true);
var signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, '', 'GET', '' ,'', '');
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
xhr.send(null);
}
/**
* Delete Object
* @param {object} params
* {
* Bucket: '' not required, bucket name
* Key : '' Required , object key
* region : '' not required bucket所在region
* Signature: '' not required, 请求签名,从服务端获取
* }
* @param cb : callback function
*/
Ks3.delObject = function(params, cb) {
var bucketName = params.Bucket || Ks3.config.bucket;
var key = Ks3.encodeKey(params.Key);
var region = params.region || Ks3.config.region;
if (region ) {
Ks3.config.baseUrl = Ks3.ENDPOINT[region];
}
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + key;
var signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, key, 'DELETE', '' ,'', '');
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
cb(xhr.status);
}else {
alert('Request was unsuccessful: ' + xhr.status);
console.log('status: ' + xhr.status);
}
}
};
xhr.open("DELETE", url, true);
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
xhr.send(null);
};
/**
* key 进行encodeURIComponent编码,'/'不能被编码
*/
Ks3.encodeKey = function (key) {
if(key == null) {
return '';
}
var newKey = encodeURIComponent(key);
newKey = newKey.replace(/\+/g,'%20').replace(/\*/g,'%2A').replace(/%7E/g,'~').replace(/%2F/g, '/');
return newKey;
}
/**
* 获取指定object的元数据
* params {
* Bucket: '' not required, bucket name
* Key: '' Required object key
* region : '' not required bucket所在region
* Signature: '' not required, 请求签名,从服务端获取
* }
*/
Ks3.headObject = function(params, cb) {
if (params.Key === null || params.Key === undefined) {
alert('require the Key');
}
var key = Ks3.encodeKey(params.Key);
var region = params.region || Ks3.config.region;
if (region ) {
Ks3.config.baseUrl = Ks3.ENDPOINT[region];
}
var bucketName = params.Bucket || Ks3.config.bucket || '';
if(!bucketName) {
alert('require the bucket name');
}
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + key;
var type = 'HEAD';
var signature = params.Signature ||Ks3.generateToken(Ks3.config.SK, bucketName, key, type, '' ,'', '');
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
//前端需要访问的头需要在CORS设置的Exposed Header中显式列出
cb(null, xhr);
}else {
console.log('status: ' + xhr.status);
cb({"msg":"request failed"}, xhr);
}
}
};
xhr.open(type, url, true);
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
xhr.send(null);
}
/**
* 获取指定object
* params {
* Bucket: '' not required, bucket name
* Key: '' Required object key
* region : '' not required bucket所在region
* range : '' not required for range request
* Signature: '' not required, 请求签名,从服务端获取
* }
*/
Ks3.getObject = function(params, cb) {
if (params.Key === null || params.Key === undefined) {
alert('require the Key');
}
var key = Ks3.encodeKey(params.Key);
var region = params.region || Ks3.config.region;
if (region ) {
Ks3.config.baseUrl = Ks3.ENDPOINT[region];
}
var bucketName = params.Bucket || Ks3.config.bucket || '';
if(!bucketName) {
alert('require the bucket name');
}
var range = params.range || '';
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + key;
var type = 'GET';
var signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, key, type, '' ,'', '');
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
var bb = new Blob([this.response],{type: this.getResponseHeader('Content-Type')}); //from IE 10
cb(null, bb, xhr);
}else {
console.log('status: ' + xhr.status);
cb({"msg":"request failed"}, bb, xhr);
}
}
};
xhr.open(type, url, true);
xhr.responseType = 'arraybuffer';
var reRange = /^bytes=(\d+)-(\d+)$/i;
if(range!==''&& reRange.test(range)){
xhr.setRequestHeader('Range',range);
}
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
xhr.send(null);
}
/**
* put object上传文件
* params {
* Bucket: '' not required, bucket name
* Key: '' Required object key
* region : '' not required bucket所在region
* ACL: '' not required private | public-read
* File: Object required 上传的文件
* ProgressListener: Function, not required 上传进度监听函数
* Signature: '' not required, 请求签名,从服务端获取
* }
*/
Ks3.putObject = function(params, cb) {
if (params.Key === null || params.Key === undefined) {
alert('require the Key');
}
var key = Ks3.encodeKey(params.Key);
var region = params.region || Ks3.config.region;
if (region ) {
Ks3.config.baseUrl = Ks3.ENDPOINT[region];
}
var bucketName = params.Bucket || Ks3.config.bucket || '';
if(!bucketName) {
alert('require the bucket name');
}
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + key;
var type = 'PUT';
var xhr = new XMLHttpRequest();
xhr.open(type, url, true);
var headers = {};
var acl = params.ACL;
if (acl == 'private' || acl == 'public-read') {
var attr_Acl = 'x-' + Ks3.config.prefix + '-acl';
xhr.setRequestHeader(attr_Acl, acl);
headers[attr_Acl] = acl;
}
var signature = params.Signature ||Ks3.generateToken(Ks3.config.SK, bucketName, key, type, params.File.type ,headers, '');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
cb(null);
}else if(xhr.status === 413 || xhr.status === 415) {
var errMsg = Ks3.xmlToJson(xhr.responseXML)['Error']['Message'];
cb({"msg":errMsg});
}else {
console.log('status: ' + xhr.status);
cb({"msg":"request failed"});
}
}
};
xhr.upload.addEventListener("progress", params.ProgressListener, false);
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
xhr.send(params.File);
}
/**
* 下面这些部分都是关于分块上传的
*/
/**
* 初始化
* params {
* Bucket: '' not required, bucket name
* Key: '' Required object key
* region : '' not required bucket所在region
* ContentType: '' not required content type of object key
* ACL: '' not required private | public-read
* TotalSize: '' not required, 分块上传文件总大小
* Signature: '' not required, 请求签名,从服务端获取
* }
*/
Ks3.multitpart_upload_init = function(params, cb) {
var bucketName = params.Bucket || Ks3.config.bucket || '';
var Key = Ks3.encodeKey(params.Key) || null;
if (!bucketName) {
throw new Error('require the bucketName');
}
if (!Key) {
throw new Error('require the object Key');
}
var region = params.region || Ks3.config.region;
if (region ) {
Ks3.config.baseUrl = Ks3.ENDPOINT[region];
}
var resource = Key + '?uploads';
resource = resource.replace(/\/\//g, "/%2F");
var contentType = params.ContentType || '';
var type = 'POST';
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + resource;
var xhr = new XMLHttpRequest();
xhr.open(type, url, true);
var headers = {};
var acl = params.ACL;
if (acl == 'private' || acl == 'public-read') {
var attr_Acl = 'x-' + Ks3.config.prefix + '-acl';
xhr.setRequestHeader(attr_Acl, acl);
headers[attr_Acl] = acl;
}
var totalSize = params.TotalSize;
if(totalSize) {
var attr_content_length = 'x-' + Ks3.config.prefix + '-meta-' + 'content-length';
xhr.setRequestHeader(attr_content_length, totalSize);
headers[attr_content_length] = totalSize;
}
var signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, resource, type, contentType ,headers, '');
xhr.overrideMimeType('text/xml'); //兼容火狐
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
var uploadId = Ks3.xmlToJson(xhr.responseXML)['InitiateMultipartUploadResult']['UploadId'];
cb(null, uploadId);
}else if(xhr.status === 413 || xhr.status === 415) {
cb({"status":xhr.status, "msg": Ks3.xmlToJson(xhr.responseXML)['Error']['Message']},null);
} else {
console.log('status: ' + xhr.status);
cb({"msg":"request failed"}, null);
}
}
};
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
if(contentType) {
xhr.setRequestHeader('Content-Type', contentType);
}
xhr.send(null);
}
/**
* 上传分块
* params {
* Bucket: '' not required, bucket name
* Key: '' Required object key
* ContentType: '' not required content type of object key
* PartNumber: '' Required 分块的序号
* UploadId: '' Required 初始化分块上传时获取的上传id
* body: 表示上传内容的blob对象
* Signature: '' not required, 请求签名,从服务端获取
* }
*/
Ks3.upload_part = function(params, cb){
var bucketName = params.Bucket || Ks3.config.bucket || '';
var Key = Ks3.encodeKey(params.Key) || null;
var contentType = params.ContentType || '';
var partNumber = (typeof params.PartNumber!=='undefined') ?params.PartNumber: '';
var uploadId = params.UploadId || '';
if (!bucketName || !Key) {
throw new Error('require the bucketName and object key');
}
if (partNumber==='' || !uploadId) {
throw new Error('require the partNumber and uploadId');
}
var body = params.body || '';
var resource = Key + '?partNumber='+partNumber+'&uploadId='+uploadId;
resource = resource.replace(/\/\//g, "/%2F");
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + resource;
var type = 'PUT';
var signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, resource, type, contentType ,'', '');
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
var etag = xhr.getResponseHeader('Etag');
cb(null, partNumber,etag);
}else if(xhr.status === 413 || xhr.status === 415) {
cb({"status":xhr.status,"msg": Ks3.xmlToJson(xhr.responseXML)['Error']['Message']},null);
} else {
console.log('status: ' + xhr.status);
cb({"msg":"request failed"}, null);
}
}
};
xhr.open(type, url, true);
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
if(contentType) {
xhr.setRequestHeader('Content-Type', contentType);
}
if(body) {
//var contentLength = body.byteLength;
//xhr.setRequestHeader('Content-Length', contentLength);
xhr.send(body);
}
}
/**
* 完成上传(发送合并分块命令)
* @param params
* {
* Bucket: '' not required, bucket name
* Key: '' Required object key
* UploadId: '' Required 初始化分块上传时获取的上传id
* body: '' Required 描述的分块列表的xml文档
* Signature: '' not required, 请求签名,从服务端获取
* }
* @param cb
*/
Ks3.upload_complete = function(params,cb){
var bucketName = params.Bucket || Ks3.config.bucket || '';
var key = Ks3.encodeKey(params.Key) || null;
var uploadId = params.UploadId || '';
var callbackurl = params.callbackurl || '';
var callbackbody = params.callbackbody || '';
if (!bucketName || !key) {
throw new Error('require the bucketName and object key');
}
if (!uploadId) {
throw new Error('require the uploadId');
}
var body = params.body || '';
var resource = key + '?uploadId='+uploadId;
resource = resource.replace(/\/\//g, "/%2F");
var contentType = 'text/plain;charset=UTF-8';
var headers = {};
if(callbackurl) {
var attr_url = 'x-' + Ks3.config.prefix + '-callbackurl';
headers[attr_url] = callbackurl;
};
if(callbackbody) {
var attr_body = 'x-' + Ks3.config.prefix + '-callbackbody';
headers[attr_body] = callbackbody;
};
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + resource;
var type = 'POST';
var signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, resource, type, contentType,'', '');
if(headers) {
signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, resource, type, contentType ,headers, '');
};
var xhr = new XMLHttpRequest();
xhr.overrideMimeType('text/xml'); //兼容火狐
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
var res = Ks3.xmlToJson(xhr.responseXML);
cb(null, res);
}else {
console.log('status: ' + xhr.status);
cb({"msg":"request failed","status": xhr.status}, res);
}
}
};
xhr.open(type, url, true);
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
if(callbackurl) {
xhr.setRequestHeader('x-kss-callbackurl',callbackurl );
}
if(callbackbody) {
xhr.setRequestHeader('x-kss-callbackbody',callbackbody );
}
if(body) {
xhr.send(body);
}
}
/**
* 取消分块上传
* @param params
* {
* Bucket: '' not required, bucket name
* Key: '' Required object key
* UploadId: '' Required 初始化分块上传时获取的上传id,
* Signature: '' not required, 请求签名,从服务端获取
* }
* @param cb
*/
Ks3.abort_multipart_upload = function(params, cb) {
var bucketName = params.Bucket || Ks3.config.bucket || '';
var key = Ks3.encodeKey(params.Key) || null;
var uploadId = params.UploadId || '';
if (!bucketName || !key) {
throw new Error('require the bucketName and object key');
}
if (!uploadId) {
throw new Error('require the uploadId');
}
var resource = key + '?uploadId='+uploadId;
resource = resource.replace(/\/\//g, "/%2F");
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + resource;
var type = 'DELETE';
var signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, resource, type, '','', '');
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status == 204 ){
cb(null, {"status":xhr.status});
}else {
console.log('status: ' + xhr.status);
cb({"msg":"request failed","status": xhr.status});
}
}
};
xhr.open(type, url, true);
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
xhr.send(null);
}
/**
*
* @param params
* {
* Bucket: '' not required, bucket name
* Key: '' Required object key
* UploadId: '' Required 初始化分块上传时获取的上传id
* Signature: '' not required, 请求签名,从服务端获取
* }
* @param cb
*/
Ks3.upload_list_part = function(params,cb){
var bucketName = params.Bucket || Ks3.config.bucket || '';
var key = Ks3.encodeKey(params.Key) || null;
var uploadId = params.UploadId || '';
if (!bucketName || !key) {
throw new Error('require the bucketName and object key');
}
if (!uploadId) {
throw new Error('require the uploadId');
}
var resource = key + '?uploadId='+uploadId;
resource = resource.replace(/\/\//g, "/%2F");
var url = Ks3.config.protocol + '://' + Ks3.config.baseUrl + '/' + bucketName + '/' + resource;
var type = 'GET';
var signature = params.Signature || Ks3.generateToken(Ks3.config.SK, bucketName, resource, type, '','', '');
var xhr = new XMLHttpRequest();
xhr.overrideMimeType('text/xml'); //兼容火狐
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
var res = Ks3.xmlToJson(xhr.responseXML);
cb(null, res);
}else {
console.log('status: ' + xhr.status);
cb({"msg":"request failed","status": xhr.status}, res);
}
}
};
xhr.open(type, url, true);
xhr.setRequestHeader('Authorization','KSS ' + Ks3.config.AK + ':' + signature );
xhr.send(null);
}
/**
* 判断字符串是否以给定的字符串结尾
* @param str
* @returns {boolean}
*/
String.prototype.endWith = function(str){
var reg=new RegExp(str+"$");
return reg.test(this);
}
/**
* change string to XML DOM
* @param oString
* @returns {*}
*/
Ks3.parseStringToXML = function(oString) {
if (document.implementation && document.implementation.createDocument) {
var xmlDoc = new DOMParser().parseFromString(oString, 'text/xml');
}
else if (window.ActiveXObject) {
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(oString);
}
else
{
alert('浏览器不支持xml解析,请升级浏览器');
return null;
}
return xmlDoc;
}
/*! ks3jssdk 14-12-2017 */
function getExpires(a){return Math.round((new Date).getTime()/1e3)+a}!function(a){var b=function(a,b){this.defaultKS3Options={KSSAccessKeyId:"",policy:"",signature:"",bucket_name:"",key:"",acl:"private",uploadDomain:"",autoStart:!1,onInitCallBack:function(){},onErrorCallBack:function(){},onFilesAddedCallBack:function(){},onBeforeUploadCallBack:function(){},onStartUploadFileCallBack:function(){},onUploadProgressCallBack:function(){},onFileUploadedCallBack:function(){},onUploadCompleteCallBack:function(){}},a&&plupload.extend(this.defaultKS3Options,a);var c={};c=this.defaultKS3Options.signature&&this.defaultKS3Options.policy?{key:this.defaultKS3Options.key,acl:this.defaultKS3Options.acl,signature:this.defaultKS3Options.signature,KSSAccessKeyId:this.defaultKS3Options.KSSAccessKeyId,policy:this.defaultKS3Options.policy,"Cache-Control":this.defaultKS3Options["Cache-Control"],Expires:this.defaultKS3Options.Expires,"Content-Disposition":this.defaultKS3Options["Content-Disposition"],"Content-Encoding":this.defaultKS3Options["Content-Encoding"],"Content-Type":this.defaultKS3Options["Content-Type"],"Content-Encoding":this.defaultKS3Options["Content-Encoding"]}:{key:this.defaultKS3Options.key,acl:this.defaultKS3Options.acl,KSSAccessKeyId:this.defaultKS3Options.KSSAccessKeyId};for(var d in this.defaultKS3Options)("string"==typeof this.defaultKS3Options[d]&&-1!==d.indexOf("x-kss-meta-")||"x-kss-newfilename-in-body"==d)&&(c[d]=this.defaultKS3Options[d]);this.defaultPluploadOptions={runtimes:"html5,flash,silverlight,html4",url:this.defaultKS3Options.uploadDomain,browse_button:"browse",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",drop_element:void 0,multipart:!0,multipart_params:c},b&&plupload.extend(this.defaultPluploadOptions,b),this.uploader=new plupload.Uploader(this.defaultPluploadOptions),this.uploader.bind("Init",this.onInit,this),this.uploader.bind("Error",this.onUploadError,this),this.uploader.init(),this.uploader.bind("FilesAdded",this.onFilesAdded,this),this.uploader.bind("BeforeUpload",this.onBeforeUpload,this),this.uploader.bind("UploadFile",this.onStartUploadFile,this),this.uploader.bind("UploadProgress",this.onUploadProgress,this),this.uploader.bind("FileUploaded",this.onFileUploaded,this)};return b.prototype.onInit=function(a,b){this.defaultKS3Options.onInitCallBack&&this.defaultKS3Options.onInitCallBack.apply(this,[a,b])},b.prototype.onUploadError=function(a,b){this.defaultKS3Options.onErrorCallBack&&this.defaultKS3Options.onErrorCallBack.apply(this,[a,b])},b.prototype.onFilesAdded=function(a,b){this.defaultKS3Options.autoStart&&this.uploader.start(),this.defaultKS3Options.onFilesAddedCallBack&&this.defaultKS3Options.onFilesAddedCallBack.apply(this,[a,b])},b.prototype.onBeforeUpload=function(a,b){this.defaultKS3Options.onBeforeUploadCallBack&&this.defaultKS3Options.onBeforeUploadCallBack.apply(this,[a,b])},b.prototype.onStartUploadFile=function(a,b){this.defaultKS3Options.onStartUploadFileCallBack&&this.defaultKS3Options.onStartUploadFileCallBack.apply(this,[a,b])},b.prototype.onUploadProgress=function(a,b){this.defaultKS3Options.onUploadProgressCallBack&&this.defaultKS3Options.onUploadProgressCallBack.apply(this,[a,b])},b.prototype.onFileUploaded=function(a,b,c){this.defaultKS3Options.onFileUploadedCallBack&&this.defaultKS3Options.onFileUploadedCallBack.apply(this,[a,b,c])},b.prototype.onUploadComplete=function(a,b){this.defaultKS3Options.onUploadCompleteCallBack&&this.defaultKS3Options.onUploadCompleteCallBack.apply(this,[a,b])},a.ks3FileUploader=b}(window);var Ks3={};Ks3.addURLParam=function(a,b){a+=-1==a.indexOf("?")?"?":"";var c=[];for(var d in b){d=encodeURIComponent(d);var e=b[d];e&&"[object String]"==Object.prototype.toString.call(e)&&c.push(d+"="+encodeURIComponent(e))}return a+c.join("&")},Ks3.xmlToJson=function(a){var b={};if(a.nodeType==Node.TEXT_NODE&&(b=a.nodeValue),a.hasChildNodes())for(var c=0;c<a.childNodes.length;c++){var d=a.childNodes.item(c),e=d.nodeName;if("undefined"==typeof b[e])"#text"===e?b=d.nodeValue:b[e]=Ks3.xmlToJson(d);else{if("undefined"==typeof b[e].length){var f=b[e];b[e]=[],b[e].push(f)}b[e].push(Ks3.xmlToJson(d))}}return b},Ks3.Base64={encTable:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/"],decTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],encUTF8:function(a){for(var b,c,d,e,f,g,h,i=[],j=a.length,k=0;j>k;k++)b=a.charCodeAt(k),b>0&&127>=b?i.push(b):b>=128&&2047>=b?(c=192|b>>6&31,d=128|63&b,i.push(c,d)):b>=2048&&65535>=b?(c=224|b>>12&15,d=128|b>>6&63,e=128|63&b,i.push(c,d,e)):b>=65536&&2097151>=b?(c=240|b>>18&7,d=128|b>>12&63,e=128|b>>6&63,f=128|63&b,i.push(c,d,e,f)):b>=2097152&&67108863>=b?(c=240|b>>24&3,d=240|b>>18&63,e=128|b>>12&63,f=128|b>>6&63,g=128|63&b,i.push(c,d,e,f,g)):b>=67108864&&2147483647>=b&&(c=240|b>>30&1,d=240|b>>24&63,e=240|b>>18&63,f=128|b>>12&63,g=128|b>>6&63,h=128|63&b,i.push(c,d,e,f,g,h));return i},encode:function(a){if(!a)return"";for(var b,c,d,e=this.encUTF8(a),f=0,g=e.length,h=[];g>f;){if(b=255&e[f++],h.push(this.encTable[b>>2]),f==g){h.push(this.encTable[(3&b)<<4],"==");break}if(c=e[f++],f==g){h.push(this.encTable[(3&b)<<4|c>>4&15]),h.push(this.encTable[(15&c)<<2],"=");break}d=e[f++],h.push(this.encTable[(3&b)<<4|c>>4&15]),h.push(this.encTable[(15&c)<<2|(192&d)>>6]),h.push(this.encTable[63&d])}return h.join("")}},Ks3.chrsz=8,Ks3.b64pad="=",Ks3.b64_hmac_sha1=function(a,b){return Ks3.binb2b64(Ks3.core_hmac_sha1(a,b))},Ks3.core_hmac_sha1=function(a,b){var c=Ks3.str2binb(a);c.length>16&&(c=Ks3.core_sha1(c,a.length*Ks3.chrsz));for(var d=Array(16),e=Array(16),f=0;16>f;f++)d[f]=909522486^c[f],e[f]=1549556828^c[f];var g=Ks3.core_sha1(d.concat(Ks3.str2binb(b)),512+b.length*Ks3.chrsz);return Ks3.core_sha1(e.concat(g),672)},Ks3.binb2b64=function(a){for(var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c="",d=0;d<4*a.length;d+=3)for(var e=(a[d>>2]>>8*(3-d%4)&255)<<16|(a[d+1>>2]>>8*(3-(d+1)%4)&255)<<8|a[d+2>>2]>>8*(3-(d+2)%4)&255,f=0;4>f;f++)c+=8*d+6*f>32*a.length?Ks3.b64pad:b.charAt(e>>6*(3-f)&63);return c},Ks3.str2binb=function(a){for(var b=Array(),c=(1<<Ks3.chrsz)-1,d=0;d<a.length*Ks3.chrsz;d+=Ks3.chrsz)b[d>>5]|=(a.charCodeAt(d/Ks3.chrsz)&c)<<32-Ks3.chrsz-d%32;return b},Ks3.core_sha1=function(a,b){a[b>>5]|=128<<24-b%32,a[(b+64>>9<<4)+15]=b;for(var c=Array(80),d=1732584193,e=-271733879,f=-1732584194,g=271733878,h=-1009589776,i=0;i<a.length;i+=16){for(var j=d,k=e,l=f,m=g,n=h,o=0;80>o;o++){16>o?c[o]=a[i+o]:c[o]=Ks3.rol(c[o-3]^c[o-8]^c[o-14]^c[o-16],1);var p=Ks3.safe_add(Ks3.safe_add(Ks3.rol(d,5),Ks3.sha1_ft(o,e,f,g)),Ks3.safe_add(Ks3.safe_add(h,c[o]),Ks3.sha1_kt(o)));h=g,g=f,f=Ks3.rol(e,30),e=d,d=p}d=Ks3.safe_add(d,j),e=Ks3.safe_add(e,k),f=Ks3.safe_add(f,l),g=Ks3.safe_add(g,m),h=Ks3.safe_add(h,n)}return Array(d,e,f,g,h)},Ks3.safe_add=function(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c},Ks3.rol=function(a,b){return a<<b|a>>>32-b},Ks3.sha1_ft=function(a,b,c,d){return 20>a?b&c|~b&d:40>a?b^c^d:60>a?b&c|b&d|c&d:b^c^d},Ks3.sha1_kt=function(a){return 20>a?1518500249:40>a?1859775393:60>a?-1894007588:-899497514},Ks3.generateHeaders=function(a){var b="",c=[];if(a){var d="x-kss";for(var e in a)0==e.indexOf(d)&&c.push(e.toLowerCase()+":"+a[e]);c.sort(),b=c.join("\n")}return b},Ks3.generateToken=function(a,b,c,d,e,f,g){var h=Ks3.generateHeaders(f),i="/"+b+"/"+c;if(""!==h)var j=d+"\n\n"+e+"\n"+g+"\n"+h+"\n"+i;else var j=d+"\n\n"+e+"\n"+g+"\n"+i;var k=Ks3.b64_hmac_sha1(a,j);return k},Ks3.ENDPOINT={HANGZHOU:"kss.ksyun.com",AMERICA:"ks3-us-west-1.ksyun.com",BEIJING:"ks3-cn-beijing.ksyun.com",HONGKONG:"ks3-cn-hk-1.ksyun.com",SHANGHAI:"ks3-cn-shanghai.ksyun.com"},Ks3.config={AK:"",SK:"",protocol:"http",baseUrl:"",region:"",bucket:"",prefix:"kss",chunkSize:5242880,retries:20,currentUploadId:"",stopFlag:!1},Ks3.listObject=function(a,b){var c=new XMLHttpRequest,d={delimiter:a.delimiter,"encoding-type":a["encoding-type"],marker:a.marker,"max-keys":a["max-keys"],prefix:a.prefix},e=a.Bucket||Ks3.config.bucket,f=a.region||Ks3.config.region;f&&(Ks3.config.baseUrl=Ks3.ENDPOINT[f]);var g=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+e;g=Ks3.addURLParam(g,d),c.overrideMimeType("text/xml"),c.onreadystatechange=function(){4==c.readyState&&(c.status>=200&&c.status<300||304==c.status?b(Ks3.xmlToJson(c.responseXML)):(alert("Request was unsuccessful: "+c.status),console.log("status: "+c.status)))},c.open("GET",g,!0);var h=a.Signature||Ks3.generateToken(Ks3.config.SK,e,"","GET","","","");c.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+h),c.send(null)},Ks3.delObject=function(a,b){var c=a.Bucket||Ks3.config.bucket,d=Ks3.encodeKey(a.Key),e=a.region||Ks3.config.region;e&&(Ks3.config.baseUrl=Ks3.ENDPOINT[e]);var f=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+c+"/"+d,g=a.Signature||Ks3.generateToken(Ks3.config.SK,c,d,"DELETE","","",""),h=new XMLHttpRequest;h.onreadystatechange=function(){4==h.readyState&&(h.status>=200&&h.status<300||304==h.status?b(h.status):(alert("Request was unsuccessful: "+h.status),console.log("status: "+h.status)))},h.open("DELETE",f,!0),h.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+g),h.send(null)},Ks3.encodeKey=function(a){if(null==a)return"";var b=encodeURIComponent(a);return b=b.replace(/\+/g,"%20").replace(/\*/g,"%2A").replace(/%7E/g,"~").replace(/%2F/g,"/")},Ks3.headObject=function(a,b){(null===a.Key||void 0===a.Key)&&alert("require the Key");var c=Ks3.encodeKey(a.Key),d=a.region||Ks3.config.region;d&&(Ks3.config.baseUrl=Ks3.ENDPOINT[d]);var e=a.Bucket||Ks3.config.bucket||"";e||alert("require the bucket name");var f=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+e+"/"+c,g="HEAD",h=a.Signature||Ks3.generateToken(Ks3.config.SK,e,c,g,"","",""),i=new XMLHttpRequest;i.onreadystatechange=function(){4==i.readyState&&(i.status>=200&&i.status<300||304==i.status?b(null,i):(console.log("status: "+i.status),b({msg:"request failed"},i)))},i.open(g,f,!0),i.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+h),i.send(null)},Ks3.getObject=function(a,b){(null===a.Key||void 0===a.Key)&&alert("require the Key");var c=Ks3.encodeKey(a.Key),d=a.region||Ks3.config.region;d&&(Ks3.config.baseUrl=Ks3.ENDPOINT[d]);var e=a.Bucket||Ks3.config.bucket||"";e||alert("require the bucket name");var f=a.range||"",g=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+e+"/"+c,h="GET",i=a.Signature||Ks3.generateToken(Ks3.config.SK,e,c,h,"","",""),j=new XMLHttpRequest;j.onreadystatechange=function(){if(4==j.readyState)if(j.status>=200&&j.status<300||304==j.status){var a=new Blob([this.response],{type:this.getResponseHeader("Content-Type")});b(null,a,j)}else console.log("status: "+j.status),b({msg:"request failed"},a,j)},j.open(h,g,!0),j.responseType="arraybuffer";var k=/^bytes=(\d+)-(\d+)$/i;""!==f&&k.test(f)&&j.setRequestHeader("Range",f),j.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+i),j.send(null)},Ks3.putObject=function(a,b){(null===a.Key||void 0===a.Key)&&alert("require the Key");var c=Ks3.encodeKey(a.Key),d=a.region||Ks3.config.region;d&&(Ks3.config.baseUrl=Ks3.ENDPOINT[d]);var e=a.Bucket||Ks3.config.bucket||"";e||alert("require the bucket name");var f=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+e+"/"+c,g="PUT",h=new XMLHttpRequest;h.open(g,f,!0);var i={},j=a.ACL;if("private"==j||"public-read"==j){var k="x-"+Ks3.config.prefix+"-acl";h.setRequestHeader(k,j),i[k]=j}var l=a.Signature||Ks3.generateToken(Ks3.config.SK,e,c,g,a.File.type,i,"");h.onreadystatechange=function(){if(4==h.readyState)if(h.status>=200&&h.status<300||304==h.status)b(null);else if(413===h.status||415===h.status){var a=Ks3.xmlToJson(h.responseXML).Error.Message;b({msg:a})}else console.log("status: "+h.status),b({msg:"request failed"})},h.upload.addEventListener("progress",a.ProgressListener,!1),h.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+l),h.send(a.File)},Ks3.multitpart_upload_init=function(a,b){var c=a.Bucket||Ks3.config.bucket||"",d=Ks3.encodeKey(a.Key)||null;if(!c)throw new Error("require the bucketName");if(!d)throw new Error("require the object Key");var e=a.region||Ks3.config.region;e&&(Ks3.config.baseUrl=Ks3.ENDPOINT[e]);var f=d+"?uploads";f=f.replace(/\/\//g,"/%2F");var g=a.ContentType||"",h="POST",i=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+c+"/"+f,j=new XMLHttpRequest;j.open(h,i,!0);var k={},l=a.ACL;if("private"==l||"public-read"==l){var m="x-"+Ks3.config.prefix+"-acl";j.setRequestHeader(m,l),k[m]=l}var n=a.TotalSize;if(n){var o="x-"+Ks3.config.prefix+"-meta-content-length";j.setRequestHeader(o,n),k[o]=n}var p=a.Signature||Ks3.generateToken(Ks3.config.SK,c,f,h,g,k,"");j.overrideMimeType("text/xml"),j.onreadystatechange=function(){if(4==j.readyState)if(j.status>=200&&j.status<300||304==j.status){var a=Ks3.xmlToJson(j.responseXML).InitiateMultipartUploadResult.UploadId;b(null,a)}else 413===j.status||415===j.status?b({status:j.status,msg:Ks3.xmlToJson(j.responseXML).Error.Message},null):(console.log("status: "+j.status),b({msg:"request failed"},null))},j.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+p),g&&j.setRequestHeader("Content-Type",g),j.send(null)},Ks3.upload_part=function(a,b){var c=a.Bucket||Ks3.config.bucket||"",d=Ks3.encodeKey(a.Key)||null,e=a.ContentType||"",f="undefined"!=typeof a.PartNumber?a.PartNumber:"",g=a.UploadId||"";if(!c||!d)throw new Error("require the bucketName and object key");if(""===f||!g)throw new Error("require the partNumber and uploadId");var h=a.body||"",i=d+"?partNumber="+f+"&uploadId="+g;i=i.replace(/\/\//g,"/%2F");var j=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+c+"/"+i,k="PUT",l=a.Signature||Ks3.generateToken(Ks3.config.SK,c,i,k,e,"",""),m=new XMLHttpRequest;m.onreadystatechange=function(){if(4==m.readyState)if(m.status>=200&&m.status<300||304==m.status){var a=m.getResponseHeader("Etag");b(null,f,a)}else 413===m.status||415===m.status?b({status:m.status,msg:Ks3.xmlToJson(m.responseXML).Error.Message},null):(console.log("status: "+m.status),b({msg:"request failed"},null))},m.open(k,j,!0),m.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+l),e&&m.setRequestHeader("Content-Type",e),h&&m.send(h)},Ks3.upload_complete=function(a,b){var c=a.Bucket||Ks3.config.bucket||"",d=Ks3.encodeKey(a.Key)||null,e=a.UploadId||"",f=a.callbackurl||"",g=a.callbackbody||"";if(!c||!d)throw new Error("require the bucketName and object key");if(!e)throw new Error("require the uploadId");var h=a.body||"",i=d+"?uploadId="+e;i=i.replace(/\/\//g,"/%2F");var j="text/plain;charset=UTF-8",k={};if(f){var l="x-"+Ks3.config.prefix+"-callbackurl";k[l]=f}if(g){var m="x-"+Ks3.config.prefix+"-callbackbody";k[m]=g}var n=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+c+"/"+i,o="POST",p=a.Signature||Ks3.generateToken(Ks3.config.SK,c,i,o,j,"","");k&&(p=a.Signature||Ks3.generateToken(Ks3.config.SK,c,i,o,j,k,""));var q=new XMLHttpRequest;q.overrideMimeType("text/xml"),q.onreadystatechange=function(){if(4==q.readyState)if(q.status>=200&&q.status<300||304==q.status){var a=Ks3.xmlToJson(q.responseXML);b(null,a)}else console.log("status: "+q.status),b({msg:"request failed",status:q.status},a)},q.open(o,n,!0),q.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+p),f&&q.setRequestHeader("x-kss-callbackurl",f),g&&q.setRequestHeader("x-kss-callbackbody",g),h&&q.send(h)},Ks3.abort_multipart_upload=function(a,b){var c=a.Bucket||Ks3.config.bucket||"",d=Ks3.encodeKey(a.Key)||null,e=a.UploadId||"";if(!c||!d)throw new Error("require the bucketName and object key");if(!e)throw new Error("require the uploadId");var f=d+"?uploadId="+e;f=f.replace(/\/\//g,"/%2F");var g=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+c+"/"+f,h="DELETE",i=a.Signature||Ks3.generateToken(Ks3.config.SK,c,f,h,"","",""),j=new XMLHttpRequest;j.onreadystatechange=function(){4==j.readyState&&(204==j.status?b(null,{status:j.status}):(console.log("status: "+j.status),b({msg:"request failed",status:j.status})))},j.open(h,g,!0),j.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+i),j.send(null)},Ks3.upload_list_part=function(a,b){var c=a.Bucket||Ks3.config.bucket||"",d=Ks3.encodeKey(a.Key)||null,e=a.UploadId||"";if(!c||!d)throw new Error("require the bucketName and object key");if(!e)throw new Error("require the uploadId");var f=d+"?uploadId="+e;f=f.replace(/\/\//g,"/%2F");var g=Ks3.config.protocol+"://"+Ks3.config.baseUrl+"/"+c+"/"+f,h="GET",i=a.Signature||Ks3.generateToken(Ks3.config.SK,c,f,h,"","",""),j=new XMLHttpRequest;j.overrideMimeType("text/xml"),j.onreadystatechange=function(){if(4==j.readyState)if(j.status>=200&&j.status<300||304==j.status){var a=Ks3.xmlToJson(j.responseXML);b(null,a)}else console.log("status: "+j.status),b({msg:"request failed",status:j.status},a)},j.open(h,g,!0),j.setRequestHeader("Authorization","KSS "+Ks3.config.AK+":"+i),j.send(null)},String.prototype.endWith=function(a){var b=new RegExp(a+"$");return b.test(this)},Ks3.parseStringToXML=function(a){if(document.implementation&&document.implementation.createDocument)var b=(new DOMParser).parseFromString(a,"text/xml");else{if(!window.ActiveXObject)return alert("浏览器不支持xml解析,请升级浏览器"),null;var b=new ActiveXObject("Microsoft.XMLDOM");b.loadXML(a)}return b};
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment