gpt4 book ai didi

javascript - 在 Node.js 服务器上通过 fs 创建文件时出错

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:40 25 4
gpt4 key购买 nike

我有一个 Node.js 服务器,我正在尝试通过将 bmp 图像上传到服务器来解析验证码。我面临两个问题。

  1. 图像未正确上传。当我尝试打开图像时,出现错误“BMP 图像具有虚假标题数据”。

  2. 目前我正在从上传的数据中读取缓冲区并解析它以提取验证码字符串。验证码字符串是任意的(结果显示正确的最后 3 个字符而不是 6 个)。

这是我正在使用的代码:

app.use (function(req, res, next) {
console.log("statrt");
var data="";
req.on('data', function(chunk) {
data += chunk;
});
req.on('end', function() {
console.log("end");
req.body = data;
next();
});
});

var DoneInSync = fibrous(function(buffer){
var val = captcha.getCaptcha(buffer);
console.log("this" + val);
return val;
});

app.post('/', function (req,res){

buffer = new Buffer(req.body);
fs.writeFileSync("captchas_ass.bmp", buffer);
var val = DoneInSync.sync(buffer);
res.write("Yoing -> " + val);
res.end();

});

验证码解析器代码运行完美,并经过离线测试。

我面临的主要问题是将 BMP 文件上传到服务器。一旦完成,我就可以做到这一点

var buf = fs.readFileSync("captcha.bmp");

并将 buf 传递给 captcha.getCaptcha(buf) 并获取结果。

有人可以解释一下上传错误在哪里吗?

最佳答案

你的中间件正在对传入的数据进行字符串化,这是它不应该做的。试试这个:

app.use (function(req, res, next) {
var data = [];
req.on('data', function(chunk) {
data.push(chunk);
});
req.on('end', function() {
console.log("end");
req.body = Buffer.concat(data); // `req.body` will be a Buffer
next();
});
});

只有当您将数据作为“原始”POST 请求上传时,此方法才有效。如果您使用的是 multipart/formdata 之类的东西,这也不起作用。为此,您应该使用类似 multer 的中间件.

关于javascript - 在 Node.js 服务器上通过 fs 创建文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com