Angular 9:formData.append('key', null)实际上附加'null'字符串

Nik*_*dze 15 multipartform-data angular angular-httpclient

使用 Typescript/Angular 9:

const formData: FormData = new FormData();
formData.append('key', null);
console.log(formData.get('key'));

>> 'null'
Run Code Online (Sandbox Code Playgroud)

这是一个“空”字符串,而不是null值。

我需要以某种方式将 null(或未定义)值附加到FormData. 我能做些什么?

Sim*_*ony 24

传递到 data.append 的任何值都将转换为字符串。完成发送空值的唯一方法是发送空字符串。即formData.append('key', '');这将向后端发送一个空值而不对其进行字符串化。


小智 14

不能,因为如果该值不是 aUSVString或 ,则它始终会转换为字符串Blob

https://developer.mozilla.org/en-US/docs/Web/API/FormData/append

字段的值。这可以是 USVString 或 Blob(包括 File 等子类)。如果未指定这些值,则该值将转换为字符串。

但是,如果删除某个键并尝试访问它,默认情况下它将返回 null。

let oFormData: FormData = new FormData();

oFormData.append('key1', null);
oFormData.get('key1'); // string 'null'
oFormData.delete('key1');
console.log(oFormData.get('key1')); // null
Run Code Online (Sandbox Code Playgroud)