Node.js中POST请求处理后无法返回解码数据至页面的问题
解决方法
首先你的代码里存在变量名大小写错误:定义的变量是database64,但解码时误用了dataBase64,这会触发ReferenceError,请先修正这个问题。
接下来要把解码后的数据返回给页面,核心是利用Express的响应对象res提供的方法,根据你的前端场景选择对应方式:
1. 返回JSON格式数据(前后端分离场景常用)
如果前端通过AJAX/Fetch发起请求,直接返回JSON数据供前端自行处理渲染:
exports.postEncDec = (req, res, next) => { let database64 = req.body.inputENC; // 修正变量名 let decodedBase64 = Buffer.from(database64, "base64").toString("ascii"); console.log(decodedBase64); // 返回JSON格式的解码结果 res.json({ decodedData: decodedBase64 }); };
2. 返回纯文本数据
若只需直接返回解码后的文本内容:
exports.postEncDec = (req, res, next) => { let database64 = req.body.inputENC; let decodedBase64 = Buffer.from(database64, "base64").toString("ascii"); console.log(decodedBase64); // 返回纯文本 res.send(decodedBase64); };
3. 服务端渲染页面(使用模板引擎时)
如果项目使用EJS、Pug等模板引擎,可将解码数据传入模板,渲染后返回完整页面:
exports.postEncDec = (req, res, next) => { let database64 = req.body.inputENC; let decodedBase64 = Buffer.from(database64, "base64").toString("ascii"); console.log(decodedBase64); // 假设模板文件名为result.ejs,将解码数据传给模板渲染 res.render('result', { decodedData: decodedBase64 }); };
额外建议添加错误处理,捕获Base64解码失败的情况,避免接口崩溃:
exports.postEncDec = (req, res, next) => { try { let database64 = req.body.inputENC; let decodedBase64 = Buffer.from(database64, "base64").toString("ascii"); console.log(decodedBase64); res.json({ decodedData: decodedBase64 }); } catch (err) { // 返回错误信息与400状态码 res.status(400).json({ error: '无效的Base64格式数据' }); } };
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

