当前位置: 首页 > 知识库问答 >
问题:

javascript - 求教,formData 错误 [Symbol(state)]: [ { name: 'file', value: '[object Object]' } ] 如何解决?

唐宏壮
2024-02-18

我在将旧代码同步到新代码,代码如下:

let formData = new FormData()let imgFiles = fs.createReadStream(chunk)formData.append('file', imgFiles)console.log(formData)let len = await new Promise((resolve, reject) => {     return formData.getLength((err, length) => (err ? reject(err) : resolve(length)))})

但发现了如下问题,旧代码打印 formData 结果如下:

FormData {  _overheadLength: 162,  _valueLength: 0,  _valuesToMeasure: [    ReadStream {      fd: null,      path: 'C:\\Users\\Dell\\Desktop\\53a37365f32c3af2ccd8d311ca73376a/1.dcdx',      flags: 'r',      mode: 438,      start: undefined,      end: Infinity,      pos: undefined,      bytesRead: 0,    ……}

但是新代码打印 formData 结果如下:

formData _FormData [FormData] {  [Symbol(state)]: [ { name: 'file', value: '[object Object]' } ]}(node:15192) UnhandledPromiseRejectionWarning: TypeError: formData.getLength is not a function……

请问有什么可能会触发我这个错误呢?还望指点,谢谢!


我尝试通过 JSON.stringify 将内容转为 json 字符串

`formData.append('file', JSON.stringify(imgFiles))`

得到了接近正确的结果,如下:

image.png

但正确的结果应该是:

image.png

共有1个答案

居晗日
2024-02-18

这个问题看起来是由于在 Node.js 中使用 formData.getLength() 方法时出现的错误。在新版本的 Node.js 中,formData.getLength() 方法已经被移除,因此您遇到了 TypeError: formData.getLength is not a function 的错误。

如果您需要获取 FormData 对象的总长度,可以使用 formData.entries().next().value.length 来代替 formData.getLength()。下面是一个修改后的代码示例:

let formData = new FormData();let imgFiles = fs.createReadStream(chunk);formData.append('file', imgFiles);console.log(formData);let len = await new Promise((resolve, reject) => {  return formData.entries().next().value.length.then(length => {    resolve(length);  }).catch(err => {    reject(err);  });});

这样,您可以通过 formData.entries().next().value.length 获取 FormData 对象的总长度,并将其作为 Promise 的结果返回。请注意,这种方法适用于 Node.js 10.0.0 及以上版本。如果您使用的是旧版本的 Node.js,您可以使用 formData.getLength() 方法。

 类似资料:
  • 本文向大家介绍如何解决VisualSVN Server 安装提示错误 Repositories is not a valid short file name,包括了如何解决VisualSVN Server 安装提示错误 Repositories is not a valid short file name的使用技巧和注意事项,需要的朋友参考一下 最近安装新版  VisualSVN Server 总

  • 描述 (Description) css( name, value )方法将单个样式属性设置为所有匹配元素的值。 语法 (Syntax) 以下是使用此方法的简单语法 - <i>selector</i>.css( name, value ) 参数 (Parameters) 以下是此方法使用的所有参数的说明 - name - 要设置的属性的名称。 value - 属性的值。 例子 (Example)

  • 尝试将流数据从MYSQL迁移到Kinesis时出错。帮我修一下。 botocore.exceptions.ClientError:调用PutRecord操作时发生错误(ValidationException):检测到1个验证错误:“streamName”处的值“”未能满足约束:成员必须满足正则表达式模式:[a-zA-Z0-9.-]

  • vue项目打包上线之后 请求地址错乱 不知道啥问题

  • 本文向大家介绍Apache启动提示错误undefined symbol: libiconv_open解决方法,包括了Apache启动提示错误undefined symbol: libiconv_open解决方法的使用技巧和注意事项,需要的朋友参考一下 昨晚整合apache和php是实在找不到解决办法,Google 百度都转一圈了,总算在百度找回来解决方法,记录一下,这个问题是在apache启动时出

  • 本文向大家介绍Mysql错误1366 - Incorrect integer value解决方法,包括了Mysql错误1366 - Incorrect integer value解决方法的使用技巧和注意事项,需要的朋友参考一下 由于这个数据库服务器存放的数据库比较多且都是小数据库,所以最初的时候是运行在windows服务器上的。前一段时间由于机房服务器要做调整,于是我便在一个夜深人静的夜晚对数据库