convertBin.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. var isStr = require('./isStr');
  2. var base64 = require('./base64');
  3. var isArrBuffer = require('./isArrBuffer');
  4. var isArr = require('./isArr');
  5. var isBuffer = require('./isBuffer');
  6. var type = require('./type');
  7. var lowerCase = require('./lowerCase');
  8. exports = function(bin, t) {
  9. var result;
  10. t = lowerCase(t);
  11. if (isStr(bin)) {
  12. result = new Uint8Array(base64.decode(bin));
  13. } else if (isArrBuffer(bin)) {
  14. bin = bin.slice(0);
  15. result = new Uint8Array(bin);
  16. } else if (isArr(bin)) {
  17. result = new Uint8Array(bin);
  18. } else if (type(bin) === 'uint8array') {
  19. result = bin.slice(0);
  20. } else if (isBuffer(bin)) {
  21. result = new Uint8Array(bin.length);
  22. for (var i = 0; i < bin.length; i++) {
  23. result[i] = bin[i];
  24. }
  25. }
  26. if (result) {
  27. switch (t) {
  28. case 'base64':
  29. result = base64.encode(result);
  30. break;
  31. case 'arraybuffer':
  32. result = result.buffer;
  33. break;
  34. case 'array':
  35. result = [].slice.call(result);
  36. break;
  37. case 'buffer':
  38. result = Buffer.from(result);
  39. break;
  40. case 'blob':
  41. result = new Blob([result.buffer]);
  42. break;
  43. }
  44. }
  45. return result;
  46. };
  47. exports.blobToArrBuffer = function(blob) {
  48. return new Promise(function(resolve, reject) {
  49. var fileReader = new FileReader();
  50. fileReader.onload = function(e) {
  51. resolve(e.target.result);
  52. };
  53. fileReader.onerror = function(err) {
  54. reject(err);
  55. };
  56. fileReader.readAsArrayBuffer(blob);
  57. });
  58. };
  59. module.exports = exports;