qiniu_upload_single.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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:'JJO5vl65dPW0Jqq2PJCKVq_s1TZToNHbyltRZF5Z:pFpWMw2POFH5bQ5JEkbpfj8JtAI=:eyJzY29wZSI6Indvemh1YS1pY29ucyIsImRlYWRsaW5lIjoyOTkwMDc1MzQ0fQ==',
  17. pics:'JJO5vl65dPW0Jqq2PJCKVq_s1TZToNHbyltRZF5Z:iU_Cu9uPM6gGAL4KxuAEU4dN6kM=:eyJzY29wZSI6Indvemh1YS1waWNzIiwiZGVhZGxpbmUiOjI5OTAwNzU0MjV9',
  18. avatars:'JJO5vl65dPW0Jqq2PJCKVq_s1TZToNHbyltRZF5Z:8zC6c7749vXkIM2kcoZaDi8zQ4U=:eyJzY29wZSI6Indvemh1YS1hdmF0YXJzIiwiZGVhZGxpbmUiOjI5OTAwNzU1MTN9',
  19. test:'JJO5vl65dPW0Jqq2PJCKVq_s1TZToNHbyltRZF5Z:yNDn75FCU8vu9sMsaiDzxC7CHj0=:eyJzY29wZSI6Indvemh1YS10ZXN0IiwiZGVhZGxpbmUiOjI5OTAwNzU1NTZ9',
  20. // video:'JJO5vl65dPW0Jqq2PJCKVq_s1TZToNHbyltRZF5Z:1IRu2w_tW56oFpVE_K9BHDbuDjU=:eyJzY29wZSI6Indvemh1YS12aWRlbyIsImRlYWRsaW5lIjoxODA1MzIyMjkwfQ=='
  21. video:'JJO5vl65dPW0Jqq2PJCKVq_s1TZToNHbyltRZF5Z:2gdqkV58YGMfGe3XqRPTjmUudwg=:eyJzY29wZSI6Indvemh1YS12aWRlbyIsImRlYWRsaW5lIjoxODQ1NTY2NDQ4fQ=='
  22. },
  23. url_prefix:{
  24. pics:'http://7oxep5.com2.z0.glb.clouddn.com',
  25. avatars:'http://7o52dq.com2.z0.glb.clouddn.com',
  26. icons:'http://7oxep6.com2.z0.glb.clouddn.com',
  27. test:'http://7oxj0w.com2.z0.glb.clouddn.com',
  28. video:'http://7rfl3z.com2.z0.glb.qiniucdn.com'
  29. }
  30. }
  31. this.init(args)
  32. };
  33. Qiniu.prototype.init= function(args) {
  34. var options = $.extend(this.defaults, args);
  35. console.log('---------methodsoptions', options);
  36. var host = document.domain;
  37. if(host=='admin.yiguanjiadev.me' || host=='admintest.yiguanjia.me'){
  38. options.bucket = 'test';
  39. }
  40. options.token = this.privateVal.token[options.bucket];
  41. this.create_items(options);
  42. }
  43. Qiniu.prototype.create_items = function(options){
  44. var that = this;
  45. if($(options.button)){
  46. var width = $(options.button).width(),
  47. height = $(options.button).height(),
  48. time = new Date().getTime();
  49. $(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;">');
  50. $('#file'+time).on('change',function(e){
  51. var result = options.before_upload();
  52. if(result){
  53. if ($(this)[0].files && $(this)[0].files.length > 0) {
  54. // 上传文件大小检查
  55. // if ($(this)[0].files[0].size > 102400) {
  56. // $.messager.alert('提示', '上传的文件太大了噢', 'warning');
  57. // $.messager.progress('close');
  58. // video_count = 0;
  59. // return false;
  60. // }
  61. that.qiniu_upload($(this)[0].files[0], options);
  62. }
  63. }
  64. })
  65. }else{
  66. console.log('元素不存在');
  67. return false;
  68. }
  69. }
  70. Qiniu.prototype.qiniu_upload = function(f, options) {
  71. var that = this;
  72. var xhr = new XMLHttpRequest();
  73. xhr.open('POST', options.qiniu_upload_url, true);
  74. //xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=------WebKitFormBoundary7S6LNB4lnXhKZt1I");
  75. //xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  76. var formData, startDate;
  77. formData = new FormData();
  78. formData.append('token', options.token);
  79. formData.append('file', f);
  80. var name = f.name;
  81. var point = name.lastIndexOf('.'),
  82. type = name.substr(point),
  83. key = Math.random().toString(16).substring(2) + (+new Date()) + type;
  84. formData.append('key', key);
  85. xhr.onreadystatechange = function(response) {
  86. if (xhr.readyState == 4 && xhr.status == 200 && xhr.responseText != "") {
  87. var blkRet = JSON.parse(xhr.responseText);
  88. blkRet.url = that.privateVal.url_prefix[options.bucket]+'/'+blkRet.key;
  89. //console && console.log(blkRet);
  90. // console.log(blkRet)
  91. options.success_callback(blkRet);
  92. } else if (xhr.status != 200 && xhr.responseText) {
  93. options.fail_callback();
  94. }
  95. };
  96. $("#progressbar").show();
  97. xhr.send(formData);
  98. }
  99. $.fn.qiniu_upload_single = function() {
  100. var method = arguments[0];
  101. // if(Qiniu[method]) {
  102. // method = Qiniu[method];
  103. // } else if( typeof(method) == 'object' || !method ) {
  104. // method = Qiniu.init;
  105. // } else {
  106. // return this;
  107. // }
  108. var args = arguments[1];
  109. // debugger;
  110. return new Qiniu(args);
  111. }
  112. })(jQuery);