有没有办法用koa重命名上传图像?

问题描述 投票:1回答:3

我只使用了koa-bodyparser,我发现它不会解析允许上传文件的表单数据。所以我正在尝试这些模块co-busboykoa-bodykoa-better-body。但在保存之前我无法弄清楚如何重命名上传文件。因为在我想知道如何做之前我从未这样做过。有任何想法吗?

javascript node.js koa body-parser koa2
3个回答
0
投票

这取决于重命名文件的范围。

如果要将文件重命名为唯一性,那么大多数库将为您处理,因此您不必执行任何操作。

如果你想给它一个自定义名称,你不能在上传之前这样做,但是你可以在之后轻松完成。

这是一个使用koa-body的工作示例

// use this as first middleware
app.use(require('koa-body')({
    formidable: {
        uploadDir: __dirname + '/public/uploads', // upload directory
        keepExtensions: true // keep file extensions
    },
    multipart: true,
    urlencoded: true,
}));

然后在你的路线

router.post('/upload-file', async function (ctx, next) {
    // file_param is the request parameter name
    let filePath = ctx.request.body.files.file_param.path

    // rename file
    fs.renameSync(filePath , '/path/to/your_new_file');
})

0
投票

可能你会想要用这个:

https://github.com/dlau/koa-body

onFileBegin {Function}文件开始的特殊回调。该功能由强大的直接执行。它可用于在将文件保存到磁盘之前重命名文件。 See the docs


0
投票

app.use(koaBody({
  multipart:true,
  encoding:'gzip',
  formidable:{
    uploadDir:path.join(__dirname,'public/upload'),
    keepExtensions: true,
    maxFieldsSize:2 * 1024 * 1024,
    onFileBegin:(name,file) => {
      const dir = path.join(__dirname,`public/upload/}`);
      file.path = `${dir}/newPath/newFileName.png`;
    },
    onError:(err)=>{
      console.log(err);
    }
  }
}));
© www.soinside.com 2019 - 2024. All rights reserved.