- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Multer作为 Express 中的 multipart/form-data
中间件.我想知道如何验证上传文件的大小,最好是在上传文件时。
我知道您可以在实例化 Multer 时在选项对象中设置 limits
:
app.use multer
limits:
fileSize: 1024 * 1024
但是,这只会 chop 上传的文件,并且不允许显示“文件太大”之类的错误消息。当文件大小超过限制时。
我还检查了事件处理程序 onFileUploadData(file, data)
,您可以在其中访问 file
对象和 data
缓冲区.在这里,我可以通过检查 data.length
来检查当前文件的大小。不过,我不清楚如何处理 data.length
大于我允许的最大上传文件大小的情况。
最终,我的想法是,当请求被 Multer 解析并且上传的文件太大时,我想向用户显示一条快速消息并重定向到表单,这样她就可以尝试一个较小的文件。我的 Controller 的 create
操作看起来像这样:
exports.create = (req, res) ->
Record.create(req.body)
.success (record) ->
image = req.files.image
uploadImage(image, record.id).then ->
req.flash 'success', 'Record created.'
res.redirect "/records/#{record.id}"
.error (err) ->
req.flash 'error', err
res.redirect 'records/new'
问题是 req.files.image
已经是此时上传到系统 tmp 文件夹的解析图像。因此,即使在此处检查文件大小也无法真正防止不必要的大文件上传。
一般情况下,使用 Multer 或其他表单解析中间件在 Express 中处理文件上传验证的最佳方式是什么?
最佳答案
要验证文件上传的大小,您只需使用 req.file.buffer
下面的代码只是一个示例。
// Set your file size limit
const maxSize = 1 * 1024 * 1024; // for 1MB
// validate file size
if (req.file.buffer.byteLength >= maxSize) {
// write code here
} else {
// write code here
}
关于javascript - 如何使用 Multer 验证 Express 中文件上传的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23854868/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!