FormData对象给字段的值设置Content-Type

本文介绍了一种使用FormData上传文件及JSON数据的方法。为解决FormData只能接收键值对的问题,文章提供了一个技巧:通过new Blob构造函数将JSON对象转换为Blob,并指定其Content-Type为application/json。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天开发上传文件,遇到一个问题,需要用FormData的格式上传一个文件file,和一个对象,对象的Content-Type是application/json。
但是FormData的append和set,都只有两个参数:键值;
后面通过百度发现了解决方案。原文地址:FormData字段指定Content-Type
通过new Blob()将需要设置Content-Type的value构建成Blob对象,对象的type是Content-Type是application/json
let fd = new FormData();
append(‘objectName’, new Blob([object], {type: ‘application/json’}));
在这里插入图片描述

### 设置 HTTP 请求头中的 Content-Type 当发送 HTTP 请求时,`Content-Type` 头用于告知服务器所发送数据的 MIME 类型。这有助于服务器理解接收到的内容格式并作出适当处理[^1]。 对于不同的场景,设置 `Content-Type` 的方式也有所不同: #### 使用 JavaScript 发送 AJAX 请求 通过 `XMLHttpRequest` 对象可以方便地自定义请求头部信息。下面是一个 POST 请求的例子,在此例子中设置了 `Content-Type` 为 `application/json`: ```javascript var xhr = new XMLHttpRequest(); xhr.open('POST', '/api/data'); xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); // 明确指定了字符编码 xhr.send(JSON.stringify({ key: "value" })); ``` 如果要上传文件,则通常不需要手动设置 `Content-Type`,因为使用 `FormData` 构造函数创建的对象会自动处理 multipart/form-data 编码过程[^2]: ```javascript let formData = new FormData(document.getElementById("myForm")); // 添加额外字段到表单数据中 formData.append('extraField', 'someValue'); let xhr = new XMLHttpRequest(); xhr.open('POST', '/upload'); xhr.send(formData); ``` 在这种情况下,浏览器将会根据实际提交的数据来自动生成合适的边界字符串,并将其作为 `Content-Type` 的一部分。 #### 利用 Fetch API 进行更简洁的操作 现代 Web 开发推荐采用 fetch() 方法替代传统的 XHR 方式。这里展示了如何利用该方法来设定 `Content-Type` 并执行 GET 或者 POST 请求: ```javascript fetch('/endpoint', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'param1=value1&param2=value2' }) .then(response => response.json()) .catch(error => console.error('Error:', error)); ``` 上述代码片段演示了向 `/endpoint` 路径发起带有 URL 参数序列化的 POST 请求的过程;而为了传输 JSON 数据,只需更改 `'Content-Type'` 属性即可适应不同需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值