【Nodejs】Expressのファイルアップロード(FileUpload)のMulterについて

https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md

multipart/form-data
multipart/form-data

其它语言

安装

使用

bodyfilefilesrequestbodyfilefiles

基本使用方法:

.none()

API

文件信息

每个文件具有下面的信息:

fieldnameoriginalnameencodingmimetypesizedestinationDiskStoragefilenamedestinationDiskStoragepathDiskStoragebufferBufferMemoryStorage
multer(opts)
dest

为了避免命名冲突,Multer 会修改上传的文件名。这个重命名功能可以根据您的需要定制。

以下是可以传递给 Multer 的选项。

deststoragefileFilterlimitspreservePath
dest
storagedestDiskStorageMemoryStorage
.single(fieldname)
fieldnamereq.file
.array(fieldname[, maxCount])
fieldnamemaxCountreq.files
.fields(fields)
fieldsreq.files
fieldsnamemaxCount

Example:

.none()
upload.fields([])
.any()
req.files

警告: 确保你总是处理了用户的文件上传。 永远不要将 multer 作为全局中间件使用,因为恶意用户可以上传文件到一个你没有预料到的路由,应该只在你需要处理上传文件的路由上使用。

storage
DiskStorage

磁盘存储引擎可以让你控制文件的存储。

destinationfilename
destinationstring'/tmp/uploads'destination
destination
filenamefilename

注意: Multer 不会为你添加任何扩展名,你的程序应该返回一个完整的文件名。

reqfile
req.body
MemoryStorage
Buffer
buffer

警告: 当你使用内存存储,上传非常大的文件,或者非常多的小文件,会导致你的应用程序内存溢出。

limits

一个对象,指定一些数据大小的限制。Multer 通过这个对象使用 busboy,详细的特性可以在 busboy's page 找到。

可以使用下面这些:

fieldNameSizefieldSizefieldsfileSizefilespartsheaderPairs

设置 limits 可以帮助保护你的站点抵御拒绝服务 (DoS) 攻击。

fileFilter

设置一个函数来控制什么文件可以上传以及什么文件应该跳过,这个函数应该看起来像这样:

错误处理机制

当遇到一个错误,multer 将会把错误发送给 express。你可以使用一个比较好的错误展示页 (express标准方式)。

multerMulterErrorerr instanceof multer.MulterError