attr-accept.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 = function _default(file, acceptedFiles) {
  8. if (file && acceptedFiles) {
  9. var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');
  10. var fileName = file.name || '';
  11. var mimeType = file.type || '';
  12. var baseMimeType = mimeType.replace(/\/.*$/, '');
  13. return acceptedFilesArray.some(function (type) {
  14. var 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. var lowerFileName = fileName.toLowerCase();
  22. var lowerType = validType.toLowerCase();
  23. var affixList = [lowerType];
  24. if (lowerType === '.jpg' || lowerType === '.jpeg') {
  25. affixList = ['.jpg', '.jpeg'];
  26. }
  27. return affixList.some(function (affix) {
  28. return lowerFileName.endsWith(affix);
  29. });
  30. }
  31. // This is something like a image/* mime type
  32. if (/\/\*$/.test(validType)) {
  33. return baseMimeType === validType.replace(/\/.*$/, '');
  34. }
  35. // Full match
  36. if (mimeType === validType) {
  37. return true;
  38. }
  39. // Invalidate type should skip
  40. if (/^\w+$/.test(validType)) {
  41. (0, _warning.warning)(false, "Upload takes an invalidate 'accept' type '".concat(validType, "'.Skip for check."));
  42. return true;
  43. }
  44. return false;
  45. });
  46. }
  47. return true;
  48. };
  49. exports.default = _default;