attr-accept.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _warning = require("../vc-util/warning");
  7. var _default = (file, acceptedFiles) => {
  8. if (file && acceptedFiles) {
  9. const acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');
  10. const fileName = file.name || '';
  11. const mimeType = file.type || '';
  12. const baseMimeType = mimeType.replace(/\/.*$/, '');
  13. return acceptedFilesArray.some(type => {
  14. const validType = type.trim();
  15. // This is something like */*,* allow all files
  16. if (/^\*(\/\*)?$/.test(type)) {
  17. return true;
  18. }
  19. // like .jpg, .png
  20. if (validType.charAt(0) === '.') {
  21. const lowerFileName = fileName.toLowerCase();
  22. const lowerType = validType.toLowerCase();
  23. let affixList = [lowerType];
  24. if (lowerType === '.jpg' || lowerType === '.jpeg') {
  25. affixList = ['.jpg', '.jpeg'];
  26. }
  27. return affixList.some(affix => lowerFileName.endsWith(affix));
  28. }
  29. // This is something like a image/* mime type
  30. if (/\/\*$/.test(validType)) {
  31. return baseMimeType === validType.replace(/\/.*$/, '');
  32. }
  33. // Full match
  34. if (mimeType === validType) {
  35. return true;
  36. }
  37. // Invalidate type should skip
  38. if (/^\w+$/.test(validType)) {
  39. (0, _warning.warning)(false, `Upload takes an invalidate 'accept' type '${validType}'.Skip for check.`);
  40. return true;
  41. }
  42. return false;
  43. });
  44. }
  45. return true;
  46. };
  47. exports.default = _default;