upload - 文件上传
支持 form-data 表单文件上传和字段解析。
依赖模块
- @zenweb/inject
- @zenweb/result
- @zenweb/helper
快速使用
yarn add @zenweb/upload
src/index.ts
import modUpload from '@zenweb/upload';
// ...
.setup(modUpload())
// ...
src/controller/upload.ts
import { mapping } from 'zenweb';
import { Upload, UploadHelper, $upload } from '@zenweb/upload';
export class UploadController {
@mapping({ method: 'POST' })
upload1(up: Upload) {
console.log(up.fields); // 表单字段
console.log(up.files); // 表单文件
}
@mapping({ method: 'POST' })
upload2(up: UploadHelper) {
console.log(up.get({ age: '!int' })); // 表单字段,使用类型转换校验器
console.log(up.file('name')); // 表单文件,取得单个文件对象
}
@mapping({ method: 'POST' })
async upload3() {
console.log(await getUploadFile('name')); // 表单文件,取得单个文件对象
}
}
function getUploadFile(name: string) {
return $upload.file(name);
}
配置项
配置项 | 类型 | 默认值 | 功能 |
---|---|---|---|
encoding | BufferEncoding | 'utf-8' | 表单内容字符集编码 |
uploadDir | string | os.tmpdir() | 文件保存目录 |
keepExtensions | boolean | false | 保留原始文件扩展名 |
allowEmptyFiles | boolean | true | 允许空文件 |
minFileSize | number | 1 | 文件最小尺寸 |
maxFileSize | number | 200 * 1024 * 1024 200M | 文件最大尺寸 |
maxTotalFileSize | number | maxFileSize | 总的文件最大尺寸 |
maxFiles | number | 无限制 | 最多允许文件数量 |
maxFields | number | 1000 | 最多允许字段数量 |
maxFieldsSize | number | 20 * 1024 * 1024 20M | 最大允许字段内容尺寸 |
hashAlgorithm | string \| false | false | 是否计算校验值 |
fileWriteStreamHandler | () => Writable | 无 | 自定义文件写入方法 |
multiples | boolean | false | 是否允许相同文件名合并为数组 'name[]' |
filename | (name: string, ext: string, part: Part, form: Formidable) => string | 无 | 自定义文件名生成方法 |
enabledPlugins | string[] | 无 | 配置启用的插件 |
filter | (part: Part) => boolean | 无 | 自定义过滤方法 |
可注入对象
singleton
- UploadOption
request
- Upload
- UploadHelper
全局模式
$upload
: UploadHelper 快捷方式