index.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /**
  2. * FeHelper Image Base64 Tools
  3. */
  4. new Vue({
  5. el: '#pageContainer',
  6. data: {
  7. sizeOri: '暂无数据',
  8. sizeBase: '暂无数据',
  9. previewSrc: '',
  10. resultContent: ''
  11. },
  12. mounted: function () {
  13. //监听paste事件
  14. document.addEventListener('paste', (event) => {
  15. let items = event.clipboardData.items || {};
  16. for (let index in items) {
  17. let item = items[index];
  18. if (/image\//.test(item.type)) {
  19. let file = item.getAsFile();
  20. this._getDataUri(file);
  21. break;
  22. }
  23. }
  24. }, false);
  25. // 监听拖拽
  26. document.addEventListener('drop', (event) => {
  27. event.preventDefault();
  28. event.stopPropagation();
  29. let files = event.dataTransfer.files;
  30. if (files.length) {
  31. if (/image\//.test(files[0].type)) {
  32. this._getDataUri(files[0]);
  33. } else {
  34. alert('请选择图片文件!');
  35. }
  36. }
  37. }, false);
  38. document.addEventListener('dragover', (event) => {
  39. event.preventDefault();
  40. event.stopPropagation();
  41. }, false);
  42. },
  43. methods: {
  44. _sizeFormat: function (num) {
  45. if (isNaN(num)) {
  46. return '暂无数据';
  47. }
  48. num = +num;
  49. if (num < 1024) {
  50. return num + ' B';
  51. } else if (num < 1024 * 1024) {
  52. return (num / 1024).toFixed(2) + ' KB';
  53. } else {
  54. return (num / 1024 / 1024).toFixed(2) + ' MB';
  55. }
  56. },
  57. _getDataUri: function (file) {
  58. let reader = new FileReader();
  59. reader.onload = (evt) => {
  60. this.resultContent = evt.target.result;
  61. this.previewSrc = evt.target.result;
  62. this.$refs.panelBox.style.backgroundImage = 'none';
  63. this.sizeOri = this._sizeFormat(file.size);
  64. this.sizeBase = this._sizeFormat(evt.target.result.length);
  65. };
  66. reader.readAsDataURL(file);
  67. },
  68. convert: function () {
  69. if (this.$refs.fileBox.files.length) {
  70. this._getDataUri(this.$refs.fileBox.files[0]);
  71. this.$refs.fileBox.value = '';
  72. }
  73. },
  74. select: function () {
  75. this.$refs.resultBox.select();
  76. },
  77. upload: function (evt) {
  78. evt.preventDefault();
  79. this.$refs.fileBox.click();
  80. }
  81. }
  82. });