跳到主要内容

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);
}

配置项

配置项类型默认值功能
encodingBufferEncoding'utf-8'表单内容字符集编码
uploadDirstringos.tmpdir()文件保存目录
keepExtensionsbooleanfalse保留原始文件扩展名
allowEmptyFilesbooleantrue允许空文件
minFileSizenumber1文件最小尺寸
maxFileSizenumber200 * 1024 * 1024 200M文件最大尺寸
maxTotalFileSizenumbermaxFileSize总的文件最大尺寸
maxFilesnumber无限制最多允许文件数量
maxFieldsnumber1000最多允许字段数量
maxFieldsSizenumber20 * 1024 * 1024 20M最大允许字段内容尺寸
hashAlgorithmstring \| falsefalse是否计算校验值
fileWriteStreamHandler() => Writable自定义文件写入方法
multiplesbooleanfalse是否允许相同文件名合并为数组 'name[]'
filename(name: string, ext: string, part: Part, form: Formidable) => string自定义文件名生成方法
enabledPluginsstring[]配置启用的插件
filter(part: Part) => boolean自定义过滤方法

可注入对象

  • singleton

    • UploadOption
  • request

    • Upload
    • UploadHelper

全局模式

$upload: UploadHelper 快捷方式