tool.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. function arrayBufferToString(buffer) {
  2. return new Uint8Array(buffer).toString()
  3. }
  4. function stringToArrayBuffer(str) {
  5. return new Uint8Array(str.split(',')).buffer
  6. }
  7. // file 切片
  8. function localFileSlice(file = null, callback) {
  9. let blobSlice = File.prototype.slice || File.prototype.mozSlice ||
  10. File.prototype.webkitSlice,
  11. chunkSize = 1024 * 1024, // Read in chunks of 1MB
  12. chunks = Math.ceil(file.size / chunkSize),
  13. currentChunk = 0,
  14. fileReader = new FileReader(),
  15. result = []
  16. fileReader.onload = function (e) {
  17. result.push(e.target.result);
  18. currentChunk++;
  19. if (currentChunk < chunks) {
  20. loadNext();
  21. } else {
  22. callback && callback(result);
  23. }
  24. };
  25. fileReader.onerror = function () {
  26. console.error('文件读取失败');
  27. callback && callback('');
  28. };
  29. function loadNext() {
  30. let start = currentChunk * chunkSize,
  31. end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
  32. fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
  33. }
  34. loadNext();
  35. }
  36. // file md5
  37. function localFileToMD5(file = null, callback) {
  38. let blobSlice = File.prototype.slice || File.prototype.mozSlice ||
  39. File.prototype.webkitSlice,
  40. chunkSize = 1024 * 1024 * 2, // Read in chunks of 2MB
  41. chunks = Math.ceil(file.size / chunkSize),
  42. currentChunk = 0,
  43. fileReader = new FileReader(),
  44. spark = new SparkMD5.ArrayBuffer()
  45. fileReader.onload = function (e) {
  46. spark.append(e.target.result);
  47. currentChunk++;
  48. if (currentChunk < chunks) {
  49. loadNext();
  50. } else {
  51. //获取md5
  52. let md5 = spark.end();
  53. callback && callback(md5);
  54. }
  55. };
  56. fileReader.onerror = function () {
  57. console.error('文件读取失败');
  58. callback && callback('');
  59. };
  60. function loadNext() {
  61. let start = currentChunk * chunkSize,
  62. end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
  63. fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
  64. }
  65. loadNext();
  66. }
  67. function formateTime(time) {
  68. const h = parseInt(time / 3600)
  69. const minute = parseInt(time / 60 % 60)
  70. const second = Math.ceil(time % 60)
  71. const hours = h < 10 ? '0' + h : h
  72. const formatSecond = second > 59 ? 59 : second
  73. return `${hours > 0 ? `${hours}:` : ''}${minute < 10 ? '0' + minute : minute}:${formatSecond < 10 ? '0' + formatSecond : formatSecond}`
  74. }
  75. function updateConfig(){
  76. axios({
  77. method: 'get',
  78. url: 'http://art-weapp.oss-cn-hangzhou.aliyuncs.com/chromeExtension/config.json',
  79. })
  80. .then(function (response) {
  81. let result = response.data
  82. chrome.storage.sync.get({ config: '' }, (item) => {
  83. if (!item.config) {
  84. chrome.storage.sync.set({ config: JSON.stringify(result) });
  85. initPopup(result.popup)
  86. return
  87. }
  88. let config = JSON.parse(item.config)
  89. if (config.version != result.version) {
  90. chrome.storage.sync.set({ config: JSON.stringify(result) });
  91. }
  92. });
  93. });
  94. }