node @koa/multer 上传文件中文明见名乱码

299 阅读1分钟

今天写了一个简单的,的node程序 想练习下前端也面的文件上传功能(包括文件切片上传)但是遇到一个问题就是,我想保留原来的文件名,但是如果文件名是中文那就回乱码想下图这样

image.png

然后通过网上也没收到好的答案 也许是我搜索方法方式不对 然后距突然想起BUffer类 因为他里面是储存二进制数据,我就想着能不能先把文件名通过buffer通过二进制编码储存然后再解码

const upfile = multer({
  storage: multer.diskStorage({
    destination(req, file, cb) {
      // console.log(req, file);
      cb(null, './up_and_down');
    },
    filename(req, file, cb) {
      cb(
        null,
        ` ${Date.now()} _ ${Buffer.from(file.originalname,'binary').toString()}`
      );
    },
  }),
});

然后文件名局可以正常显示中文了