vue项目,根据文件名,判断文件类型

效果示意

方法调用以及结果显示

console.log(this.matchFileType('图片.png'))
# 结果:image
console.log(this.matchFileType('图片.jpg'))
# 结果:image

console.log(this.matchFileType('文档.pdf'))
# 结果:pdf

console.log(this.matchFileType('视频.mp4'))
# 结果:radio
# ...

Js方法

文件后缀可自由拓展

/**
 * 根据文件名后缀区分 文件类型
 *
 * @param: fileName - 文件名称
 * @param: 数据返回 1) 无后缀匹配 - false
 * @param: 数据返回 2) 匹配图片 - image
 * @param: 数据返回 3) 匹配 txt - txt
 * @param: 数据返回 4) 匹配 excel - excel
 * @param: 数据返回 5) 匹配 word - word
 * @param: 数据返回 6) 匹配 pdf - pdf
 * @param: 数据返回 7) 匹配 ppt - ppt
 * @param: 数据返回 8) 匹配 视频 - video
 * @param: 数据返回 9) 匹配 音频 - radio
 * @param: 数据返回 10) 其他匹配项 - other
 */
export function matchFileType(fileName) {
  // 后缀获取
  let suffix = '';
  // 获取类型结果
  let result = '';
  if (!fileName) return false;
  try {
    // 截取文件后缀
    suffix = fileName.substr(fileName.lastIndexOf('.') + 1, fileName.length)
    // 文件后缀转小写,方便匹配
    suffix = suffix.toLowerCase()
  } catch (err) {
    suffix = '';
  }
  // fileName无后缀返回 false
  if (!suffix) {
    result = false;
    return result;
  }

  let fileTypeList = [
    // 图片类型
    {'typeName': 'image', 'types': ['png', 'jpg', 'jpeg', 'bmp', 'gif']},
    // 文本类型
    {'typeName': 'txt', 'types': ['txt']},
    // excel类型
    {'typeName': 'excel', 'types': ['xls', 'xlsx']},
    {'typeName': 'word', 'types': ['doc', 'docx']},
    {'typeName': 'pdf', 'types': ['pdf']},
    {'typeName': 'ppt', 'types': ['ppt']},
    // 视频类型
    {'typeName': 'video', 'types': ['mp4', 'm2v', 'mkv']},
    // 音频
    {'typeName': 'radio', 'types': ['mp3', 'wav', 'wmv']}
  ]
  // let fileTypeList = ['image', 'txt', 'excel', 'word', 'pdf', 'video', 'radio']
  for (let i = 0; i < fileTypeList.length; i++) {
    const fileTypeItem = fileTypeList[i]
    const typeName = fileTypeItem.typeName
    const types = fileTypeItem.types
    console.log(fileTypeItem);
    result = types.some(function (item) {
      return item === suffix;
    });
    if (result) {
      return typeName
    }
  }
  return 'other'
}
Logo

前往低代码交流专区

更多推荐