Skip to content

引入

ts
import {
  downloadFileFromBlob,
  downloadFilesToZip,
  getSafeFileExtension,
  getExtensionFromMime
} from 't-comm';

// 不支持 tree-shaking 的项目
import {
  downloadFileFromBlob,
  downloadFilesToZip,
  getSafeFileExtension,
  getExtensionFromMime
} from 't-comm/lib/file/index';

// 只支持 ESM 的项目
import {
  downloadFileFromBlob,
  downloadFilesToZip,
  getSafeFileExtension,
  getExtensionFromMime
} from 't-comm/es/file/index';

downloadFileFromBlob(blob, fileName)

描述:从 Blob 对象下载文件。创建一个临时链接并触发浏览器下载

参数

参数名描述
blobBlob 数据
fileName下载的文件名

示例

ts
const blob = new Blob(['Hello World'], { type: 'text/plain' });
downloadFileFromBlob({
  blob,
  fileName: 'hello.txt'
});

downloadFilesToZip(fileList, zipName, saveAs, JSZip)

描述:批量下载文件为 ZIP 压缩包。将多个文件打包成 ZIP 并触发下载

参数

参数名描述
fileList文件列表,每个文件包含 content 和 name
zipNameZIP 文件名
saveAsFileSaver.js 的 saveAs 函数
JSZipJSZip 库实例

返回: Promise<boolean> - 成功返回 true,失败返回 false

示例

ts
import JSZip from 'jszip';
import { saveAs } from 'file-saver';

downloadFilesToZip({
  fileList: [
    { content: 'file1 content', name: 'file1.txt' },
    { content: 'file2 content', name: 'file2.txt' }
  ],
  zipName: 'files.zip',
  saveAs,
  JSZip
}).then(success => {
  console.log('下载结果:', success);
});

getSafeFileExtension(file)

描述:安全获取文件后缀名

参数

参数名类型描述
fileFile文件对象

返回: string

文件后缀名(小写,不带点)

示例

ts
const f = new File([''], 'photo.PNG', { type: 'image/png' });
getSafeFileExtension(f); // 'png'

// 没有 type 时会退化到用文件名后缀
const f2 = new File([''], 'doc.PDF');
getSafeFileExtension(f2); // 'pdf'

getExtensionFromMime(mimeType)

描述:从 MIME 类型获取文件后缀

参数

参数名类型描述
mimeTypestringMIME 类型

返回: string | null

文件后缀或 null

示例

ts
getExtensionFromMime('image/png');                 // 'png'
getExtensionFromMime('application/pdf');           // 'pdf'
getExtensionFromMime('application/foo-unknown');   // null