You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Node.js Buffer转换为原字符串?FormData传Blob遇异常

问题分析与解决方案

你的问题根源是前端封装Blob时传入了对象而非字符串,导致Blob存储的是对象默认toString()的结果[object Object],服务器自然只能解析出这个内容。以下是具体解决步骤:

前端正确封装方式

确保将目标字符串正确转换为Blob并传入FormData:

// 1. 定义要发送的原字符串
const targetString = "这里是你要发送的原字符串内容";
// 2. 用字符串数组构造Blob(Blob构造函数第一个参数必须是可迭代的二进制数据集合)
const stringBlob = new Blob([targetString], { type: 'text/plain; charset=utf-8' });
// 3. 加入FormData
const formData = new FormData();
formData.append('string_data', stringBlob);

注意:Blob构造函数的第一个参数必须是数组形式(哪怕只有单个字符串),如果直接传入对象(比如new Blob(targetString)或new Blob({key: targetString})),就会触发对象的默认toString(),生成[object Object]。

服务器端Node.js解析方式

假设你用Express框架配合multer中间件处理multipart/form-data(这是处理FormData最常用的方案),解析代码如下:

const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer();

app.post('/receive', upload.single('string_data'), (req, res) => {
  // 从req.file.buffer中取出二进制数据,转成utf8字符串
  const originalString = req.file.buffer.toString('utf8');
  console.log('还原的原字符串:', originalString);
  res.send({ success: true, data: originalString });
});

如果没有用框架,直接处理HTTP请求,也要确保正确解析multipart/form-data格式的Body,提取对应字段的Buffer后用toString('utf8')还原。

常见错误排查

  • 前端误将对象传入FormData:比如formData.append('data', { content: targetString }),浏览器会自动把对象转为[object Object]字符串。
  • Blob构造参数错误:未用数组包裹字符串,导致Blob存储的是对象的toString结果。
  • 编码不匹配:如果前端Blob指定了非utf8编码(比如gbk),服务器端要对应使用buffer.toString('gbk')解析。

内容的提问来源于stack exchange,提问作者BreenDeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:17:05