attr-accept.js 1.7 KB

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