前端小白白啦 2023-02-01 11:46 采纳率: 37.1%
浏览 19
已结题

刚学nodejs 浏览器发送过得txt文件中文无法正常解析 已设置utf8

初学nodejs 浏览器发送过得txt文件中文无法正常解析 已设置utf8
客户端使用 FormData <input type="file" class="ipt" /> 发送的 txt文件

const http = require("http");
const fs =  require('fs')
const serve = http.createServer((req, res) => {
const fswrite = fs.createWriteStream('./真实简历.txt', {
  flags: 'a+',
  encoding: 'utf8'
})
  res.setHeader("Content-Type", "application/json;charset=utf-8");
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader("Access-Control-Allow-Headers", "*");
  res.setHeader("Access-Control-Allow-Methods", "*");
  // 格式
  req.setEncoding('UTF-8')
  let fff = ''
  // 接收 文件信息
  req.on('data', (data) => {
    console.log('data',  data.toString());
    console.log('data',  data);
    fff += data
    // 持续写入
    fswrite.write(data)

  })
  req.on('end',() => {
    fswrite.close()
  })
  res.end(JSON.stringify({ A: 123 }));
});
serve.listen(8000, () => {
  console.log("服务器已经启动 http://127.0.0.1:5500");
});


打印结果

img

我想知道怎么正确解析里面的中文

  • 写回答

2条回答 默认 最新

  • m0_54204465 2023-02-01 12:00
    关注

    请注意,上面的数据是被包装在multipart/form-data格式中的,因此需要使用第三方库解析该格式。

    可以使用以下代码解析文件:

    const multer = require('multer');
    const storage = multer.memoryStorage();
    const upload = multer({ storage: storage });
    
    // 解析 multipart/form-data
    app.post('/file', upload.single('a'), (req, res) => {
    const file = req.file;
    console.log(file.buffer.toString('utf-8'));
    res.send(file.buffer.toString('utf-8'));
    });
    
    

    这段代码需要安装multer库,可以在命令行使用npm install multer安装。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月10日
  • 创建了问题 2月1日