📜  类型 formdata 上不存在条目 (1)

📅  最后修改于: 2023-12-03 15:41:10.459000             🧑  作者: Mango

类型 formdata 上不存在条目

当在使用表单的FormData类型时,通过键名获取对应的值时,若不存在该键名,则会返回错误信息'类型 formdata 上不存在条目'。

产生原因

数据类型为FormData的对象是一种表单数据格式,主要用于上传单个或多个二进制文件和其他表单数据。当我们往FormData对象中添加数据时,如果想要获取该数据的值时,就需要使用对象的get()方法,并传入键名来获取对于这个键的值。但是如果键名不存在,就会出现错误信息"'类型 formdata 上不存在条目"。

示例代码:

const formData = new FormData();
formData.append('filename', file);
console.log(formData.get('keyname')); // '类型 formdata 上不存在条目'
解决方法
  1. 检查键名是否正确,确保键名与查找时一致。

示例代码:

const formData = new FormData();
formData.append('filename', file);

const filename = formData.get('filename');
if (filename) {
  console.log(filename);
} else {
  console.log('找不到该键名对应的值');
}
  1. 使用has()方法来检查键名是否存在,避免出现该错误。

示例代码:

const formData = new FormData();
formData.append('filename', file);

if (formData.has('filename')) {
  const filename = formData.get('filename')
  console.log(filename);
} else {
  console.log('不存在该键名');
}

以上两个方法可以避免出现该错误,同时还可以方便的处理表单数据。但是在使用FormData时,还需要注意以下几点:

  • 如果使用formData.append('key',file)添加了一个FormData对象,那么在服务端接收到这个形式的请求时,会发现这个请求的Content-Type变成了multipart/form-data,这种情况下,在Node.js中可以使用multer等中间件来解析从FormData对象发送的数据,其他服务器语言也有类似的解析中间件。
  • 在使用fetch()发送FormData对象的请求时,需要设置请求头的Content-Type为undefined,fetch()会自动设置请求头为multipart/form-data。
  • 当使用formData.set(name,value)时,如果name不存在,会自动执行formData.append(name,value)。

以上是我对该错误信息的解析,希望对您有所帮助。