# multipartUpload **Repository Path**: yangchunlei/multipart-upload ## Basic Information - **Project Name**: multipartUpload - **Description**: 基于aliOSS二次封装直传和断点续传 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.npmjs.com/package/multipart_upload - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-10-14 - **Last Updated**: 2022-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SimpleOSS `该包旨在简化OSS上传使用流程` ## 说明 `SimpleOSS是构造函数,使用前需要先进行实例化。` 该包已发布到公司私有镜像,npmjs留存一份。 该包使用alicdn动态引入ali-oss依赖,极大程度上减小webpack打包体积及打包时间。 #### 一、实例化 | 参数 | 类型 | 描述 | 默认值 | | --------- | -------- | ---------- | -------------------------- | | userId | string | 租户 ID | | partSize | string | 分片大小 | 1 (单位 MB) | | progress | Function | 进度回调 | (response: object) => void | | onPreview | Function | 预览图回调 | (src: string) => void | ```js import { SimpleOSS } from "multipart_upload"; const oss = new SimpleOSS({ userId: ".........", partSize: 1, progress: (percentage) => { console.log(`当前进度: ${percentage}%`); }, onPreview: (imgSrc) => { console.log(`当前预览图地址: ${imgSrc}`); }, }); ``` #### 二、上传调用 | 参数 | 类型 | 描述 | | ------- | ------ | -------- | | file | File | 文件对象 | | options | Object | 配置对象 | **options** | 参数 | 类型 | 可选值 | 描述 | 默认值 | | ------------ | ------------------- | --------------------------------------------- | -------------------------------------------------- | -------- | | tokenValue | Object | | OSS 配置(必传) | | | validation | Function \| boolean | | 文件校验方法,或者使用组件内部的校验方法(非必填) | true | | sizeMap | Object | | 文件大小校验规则 [validation 为 true 时, 必传] | | | accept | String | image/\* \| video/\* \| audio/\* \| vector/\* | 接受的文件类型 (非必传) (不传代表直接放弃类型校验) | '' | | fileName | String | | 上传文件名 (非必传)(用于覆盖或自定义上传名) | | | responsePath | String | absolute \| relative | 响应路径 (非必传) | absolute | *validation传递false时, sizeMap和accept都不需要传* **tokenValue** | 参数 | 类型 | 描述 | | --------------- | ------ | -------------- | | accessKeyId | string | OSS 账号 | | accessKeySecret | string | OSS 临时密码 | | securityToken | string | OSS 临时 Token | | region | string | OSS 区域 | | bucket | string | OSS 桶 | | dir | string | OSS 路径 | **sizeMap** | 参数 | 类型 | 描述 | | -------- | ------ | ------------------ | | maxValue | number | 文件最大值(体积) | | minValue | number | 文件最小值(体积) | | minPixel | number | 文件最小值(分辨率) | ```js // 例如: oss.upload({ file: files, options: { tokenValue: { accessKeyId: "STS.NTWXHx9Ua7X19KYTLUBNNP5ca", securityToken: "CAIS/QF1q6Ft5B2yfSjI.....", bucket: "test-dam-feiyuantu", accessKeySecret: "4mDSxN5Uefq1QrKG6WMPkAm5JPbyi7sW5BeNDv9hxZnU", region: "oss-cn-beijing", expireTime: "2020-10-23T08:27:21Z", dir: "vdam-php/others/111129/", }, validation: true, sizeMap: { minValue: 0, // MB maxValue: 2, // MB minPixel: 2000, // px }, accept: "image/*", }, }); ``` ```js // 使用自定义校验方法 // 校验成功 code: 1, 校验失败 code: 0 -- 固定格式!!!!! const customValidator = (file) => { const { name } = file; if (name.length > 5) return { code: 0, message: `自定义校验方法: 文件名长度 ${name.length}` }; return { code: 1, message: `自定义校验方法: 文件名长度 ${name.length}`, src: "...", }; }; oss.upload({ file: files, options: { tokenValue: { accessKeyId: "...", securityToken: "...", bucket: "...", accessKeySecret: "...", region: "...", expireTime: "...", dir: "...", }, validation: customValidator, }, }); ``` ### 三、暂停、取消调用 ```js oss.cancel(); ``` ### 四、续传调用 ```js oss.multipartUpload(); ``` # 生成校验规则 该方法旨在简化生成文件 [大小,分辨率] 校验规则流程 ```js import { verificationRules } from "multipar_upload"; const { store } = context; const { runtime: { customerInfo }, } = store(); const { config } = customerInfo || {}; const sizeMap = verificationRules(config, file); console.log(sizeMap); // 此时的sizeMap可用于 SimpleOSS 校验规则中 ```