qiniu_upload_single.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. ;
  2. (function ($) {
  3. var Qiniu = function (args) {
  4. this.defaults = {
  5. button:"#qiniu_uploader",
  6. qiniu_upload_url : 'http://up.qiniu.com',
  7. bucket:'',
  8. token:'',
  9. //token:'JJO5vl65dPW0Jqq2PJCKVq_s1TZToNHbyltRZF5Z:uxXRiYFI6TVNEzg8SbZL5JgOXsQ=:eyJzY29wZSI6Indvemh1YS1pY29ucyIsImRlYWRsaW5lIjoyOTg4ODU5MzUxfQ==',
  10. before_upload:function(){return true;},//上传之前调用的函数 各种判断和验证
  11. success_callback:function(result){},//上传成功之后的回调
  12. fail_callback:function(){}//上传失败之后的回调
  13. }
  14. this.privateVal = {
  15. token:{
  16. icons:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:RM2Gr0eV9aQXuOY8ZdW8-xuqIWM=:eyJzY29wZSI6Imljb25zIiwiZGVhZGxpbmUiOjE0NzQ0NTE4NDkwMDAwMDAwMDB9',
  17. //icons:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:bvW3CgEQgS8x8B6-B-OEALUB4Hg=:eyJzY29wZSI6Imljb25zIiwiZGVhZGxpbmUiOjE0NzQ0NTEyMjEwMDAwfQ==',
  18. //pics:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:8oDemD47dVgyJ6PkSVGrqVbwNjw=:eyJzY29wZSI6InlpZ3VhbmppYS1waWNzIiwiZGVhZGxpbmUiOjEuNDc0NDQ1ODU5ZSsyMn0=',
  19. pics:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:PhjO5GeGx1VECe1W7AlqUHZrxhg=:eyJzY29wZSI6InBpY3MiLCJkZWFkbGluZSI6MTQ3NDQ1MTg0OTAwMDAwMDAwMH0=',
  20. //avatars:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:pHF1FKzQZlwXtJHmwsB3qO-ghnM=:eyJzY29wZSI6InlpZ3VhbmppYS1hdmF0YXJzIiwiZGVhZGxpbmUiOjEuNDc0NDQ1ODU5ZSsyNX0=',
  21. avatars:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:a-HCK5r5iPL8Bisb-mQLI21oZJM=:eyJzY29wZSI6ImF2YXRhcnMiLCJkZWFkbGluZSI6MTQ3NDQ1MTg0OTAwMDAwMDAwMH0=',
  22. //test:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:w1caW6Bxg-_SyTJQSgDENmsTEtM=:eyJzY29wZSI6InlpZ3VhbmppYS10ZXN0IiwiZGVhZGxpbmUiOjEuNDc0NDQ1ODU5ZSsyMn0=',
  23. test:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:kPiwYRwhAt8ULIMxphH8Hbgs6Mk=:eyJzY29wZSI6InRlc3QiLCJkZWFkbGluZSI6MTQ3NDQ0NTg1OTAwfQ==',
  24. //video:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:hauyYF_p1mGoIkuIA3C74u5cdVo=:eyJzY29wZSI6InlpZ3VhbmppYS12aWRlbyIsImRlYWRsaW5lIjoxLjQ3NDQ0NTg1OWUrMjV9'
  25. video:'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:on3HAIABM-iYVHVJwX47onvMj_A=:eyJzY29wZSI6InZpZGVvIiwiZGVhZGxpbmUiOjE0NzQ0NTE4NDkwMDAwMDAwMDB9'
  26. },
  27. url_prefix:{
  28. pics:'http://pics.yiguanjia.club',
  29. avatars:'http://avatar.yiguanjia.club',
  30. //icons:'http://odug4508u.bkt.clouddn.com',
  31. icons:'http://icon.yiguanjia.club',
  32. //test:'http://odufxpjo7.bkt.clouddn.com',
  33. test:'http://test.yiguanjia.club',
  34. video:'http://video.yiguanjia.club'
  35. }
  36. }
  37. this.init(args);
  38. };
  39. Qiniu.prototype.init= function(args) {
  40. var options = $.extend(this.defaults, args);
  41. console.log('---------methodsoptions', options);
  42. var host = document.domain;
  43. if(host=='admin.yiguanjiadev.me' || host=='admintest.yiguanjia.club'){
  44. options.bucket = 'test';
  45. }
  46. options.token = this.privateVal.token[options.bucket];
  47. this.create_items(options);
  48. }
  49. Qiniu.prototype.create_items = function(options){
  50. var that = this;
  51. if($(options.button)){
  52. var width = $(options.button).width(),
  53. height = $(options.button).height(),
  54. time = new Date().getTime();
  55. $(options.button).after('<input type="file" id="file'+time+'" name="file" style="height: '+height+'px;left: -'+width+'px;opacity: 0;position: relative;display: inline;top: 0;width: '+width+'px;">');
  56. $('#file'+time).on('change',function(e){
  57. var result = options.before_upload();
  58. if(result){
  59. if ($(this)[0].files && $(this)[0].files.length > 0) {
  60. // 上传文件大小检查
  61. // if ($(this)[0].files[0].size > 102400) {
  62. // $.messager.alert('提示', '上传的文件太大了噢', 'warning');
  63. // $.messager.progress('close');
  64. // video_count = 0;
  65. // return false;
  66. // }
  67. that.qiniu_upload($(this)[0].files[0], options);
  68. }
  69. }
  70. })
  71. }else{
  72. console.log('元素不存在');
  73. return false;
  74. }
  75. }
  76. Qiniu.prototype.qiniu_upload = function(f, options) {
  77. var that = this;
  78. var xhr = new XMLHttpRequest();
  79. xhr.open('POST', options.qiniu_upload_url, true);
  80. //xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=------WebKitFormBoundary7S6LNB4lnXhKZt1I");
  81. //xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  82. var formData, startDate;
  83. formData = new FormData();
  84. formData.append('token', options.token);
  85. formData.append('file', f);
  86. var name = f.name;
  87. var point = name.lastIndexOf('.'),
  88. type = name.substr(point),
  89. key = Math.random().toString(16).substring(2) + (+new Date()) + type;
  90. formData.append('key', key);
  91. xhr.onreadystatechange = function(response) {
  92. if (xhr.readyState == 4 && xhr.status == 200 && xhr.responseText != "") {
  93. var blkRet = JSON.parse(xhr.responseText);
  94. blkRet.url = that.privateVal.url_prefix[options.bucket]+'/'+blkRet.key;
  95. //console && console.log(blkRet);
  96. // console.log(blkRet)
  97. options.success_callback(blkRet);
  98. } else if (xhr.status != 200 && xhr.responseText) {
  99. options.fail_callback();
  100. }
  101. };
  102. $("#progressbar").show();
  103. xhr.send(formData);
  104. }
  105. $.fn.qiniu_upload_single = function() {
  106. var method = arguments[0];
  107. // if(Qiniu[method]) {
  108. // method = Qiniu[method];
  109. // } else if( typeof(method) == 'object' || !method ) {
  110. // method = Qiniu.init;
  111. // } else {
  112. // return this;
  113. // }
  114. console.log(arguments);
  115. var args = arguments[1];
  116. // debugger;
  117. return new Qiniu(args);
  118. }
  119. })(jQuery);