utils.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. "use strict";
  2. const common_vendor = require("../../../common/vendor.js");
  3. const get_file_ext = (name) => {
  4. const last_len = name.lastIndexOf(".");
  5. const len = name.length;
  6. return {
  7. name: name.substring(0, last_len),
  8. ext: name.substring(last_len + 1, len)
  9. };
  10. };
  11. const get_extname = (fileExtname) => {
  12. if (!Array.isArray(fileExtname)) {
  13. let extname = fileExtname.replace(/(\[|\])/g, "");
  14. return extname.split(",");
  15. } else {
  16. return fileExtname;
  17. }
  18. };
  19. const get_files_and_is_max = (res, _extname) => {
  20. let filePaths = [];
  21. let files = [];
  22. if (!_extname || _extname.length === 0) {
  23. return {
  24. filePaths,
  25. files
  26. };
  27. }
  28. res.tempFiles.forEach((v) => {
  29. let fileFullName = get_file_ext(v.name);
  30. const extname = fileFullName.ext.toLowerCase();
  31. if (_extname.indexOf(extname) !== -1) {
  32. files.push(v);
  33. filePaths.push(v.path);
  34. }
  35. });
  36. if (files.length !== res.tempFiles.length) {
  37. common_vendor.index.showToast({
  38. title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`,
  39. icon: "none",
  40. duration: 5e3
  41. });
  42. }
  43. return {
  44. filePaths,
  45. files
  46. };
  47. };
  48. const get_file_info = (filepath) => {
  49. return new Promise((resolve, reject) => {
  50. common_vendor.index.getImageInfo({
  51. src: filepath,
  52. success(res) {
  53. resolve(res);
  54. },
  55. fail(err) {
  56. reject(err);
  57. }
  58. });
  59. });
  60. };
  61. const get_file_data = async (files, type = "image") => {
  62. let fileFullName = get_file_ext(files.name);
  63. const extname = fileFullName.ext.toLowerCase();
  64. let filedata = {
  65. name: files.name,
  66. uuid: files.uuid,
  67. extname: extname || "",
  68. cloudPath: files.cloudPath,
  69. fileType: files.fileType,
  70. url: files.path || files.path,
  71. size: files.size,
  72. //单位是字节
  73. image: {},
  74. path: files.path,
  75. video: {}
  76. };
  77. if (type === "image") {
  78. const imageinfo = await get_file_info(files.path);
  79. delete filedata.video;
  80. filedata.image.width = imageinfo.width;
  81. filedata.image.height = imageinfo.height;
  82. filedata.image.location = imageinfo.path;
  83. } else {
  84. delete filedata.image;
  85. }
  86. return filedata;
  87. };
  88. exports.get_extname = get_extname;
  89. exports.get_file_data = get_file_data;
  90. exports.get_files_and_is_max = get_files_and_is_max;