首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >express-使用fileSize限制时上传原始文件

express-使用fileSize限制时上传原始文件
EN

Stack Overflow用户
提问于 2019-11-24 12:36:22
回答 1查看 554关注 0票数 1

我正在使用上面提到的fileuplaod中间件。我想设置一个中间件,警告文件大小超过限制,但不想截断文件。

代码语言:javascript
运行
复制
app.use(fileUpload({
    limits: { fileSize: 1 * 1024 * 1024 },
    createParentPath: true,
    safeFileNames: true,
    preserveExtension: 5,
    limitHandler: function (req, res, next) {
        Logger.warn("File size limit has been exceeded");
    },
    abortOnLimit: false,
    useTempFiles: true,
    tempFileDir: './temp/apiuploads'
}));

文件正在被截断。因此,上传的文件无法打开。我想在超过文件大小限制时记录消息,但不想截断文件。请给我一个解决方案。

EN

回答 1

Stack Overflow用户

发布于 2020-04-08 19:53:09

不要为中间件添加文件限制选项,我也建议只对上传路由使用中间件。

使用size值检查上传文件后的大小。

如果大小超过您的限制,则记录消息。

示例:

代码语言:javascript
运行
复制
app.use('/upload', fileUpload({
    createParentPath: true,
    safeFileNames: true,
    preserveExtension: 5,
    useTempFiles: true,
    tempFileDir: './temp/apiuploads'
}));

app.post('/upload', (req, res) => {
  if (!req.files || Object.keys(req.files).length === 0) {
    res.status(400).send('No files were uploaded.');
    return;
  }

  const uploads = Object.values(req.files).map((file) => {
    if (file.size > 1 * 1024 * 1024) {
      Logger.warn(`File ${file.name} size limit has been exceeded`);
    }
    const uploadPath = path.join(__dirname, 'uploads', file.name);
    return file.mv(uploadPath);
  });

  Promise.all(uploads)
    .then(() => res.send('Files uploaded to ' + path.join(__dirname, 'uploads')))
    .catch(err => res.status(500).send(err));
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59014701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档