FormData用法详解

FormData 对象: 

formdata

一.创建一个formData对象实例的方式

1、创建一个空对象

var formData = new FormData();//通过append方法添加数据

 2、使用已有表单来初始化对象

//表单示例
<form id="myForm" action="" method="post">
    <input type="text" name="name">名字
    <input type="password" name="psw">密码
    <input type="submit" value="提交">
</form>

<script>
//方法示例
// 获取页面已有的一个form表单
var form = document.getElementById("myForm");
// 用表单来初始化
var formData = new FormData(form);
// 我们可以根据name来访问表单中的字段
var name = formData.get("name"); // 获取名字
var psw = formData.get("psw"); // 获取密码
// 当然也可以在此基础上,添加其他数据
formData.append("token","kshdfiwi3rh");
</script>

二. 操作方法

formData里面存储的数据是以健值对的形式存在的,key是唯一的,一个key可能对应多个value。 
如果是使用表单初始化,每一个表单字段对应一条数据,它们的HTML name属性即为key值,它们value属性对应value值。 

1.获取值

//通过get(key)/getAll(key)来获取对应的value
formData.get("name"); // 获取key为name的第一个值
formData.getAll("name"); // 返回一个数组,获取key为name的所有值

 2 添加数据

/通过append(key, value)来添加数据,如果指定的key不存在则会新增一条数据,如果key存在,则添加到数据的末尾
formData.append("k1", "v1");
formData.append("k1", "v2");
formData.append("k1", "v3");

获取值时方式及结果如下

formData.get("k1"); // "v1"
formData.getAll("k1"); // ["v1","v2","v3"]

 3.设置修改数据

//set(key, value)来设置修改数据,如果指定的key不存在则会新增一条,如果存在,则会修改对应的value值
formData.append("k1", "v1");
formData.set("k1", "1");
formData.getAll("k1"); // ["1"]

4.判断是否存在对应数据

//has(key)来判断是否对应的key值
formData.append("k1", "v1");
formData.append("k2",null);

formData.has("k1"); // true
formData.has("k2"); // true
formData.has("k3"); // false

5.删除数据

//delete(key)删除数据
formData.append("k1", "v1");
formData.append("k1", "v2");
formData.append("k1", "v1");
formData.delete("k1");

formData.getAll("k1"); // []

 三.JQuery实例

//添加数据方式见上二。
//processData: false, contentType: false,多用来处理异步上传二进制文件。
 $.ajax({
    url: 'xxx',
    type: 'POST',
    data: formData,                    // 上传formdata封装的数据
    dataType: 'JSON',
    cache: false,                      // 不缓存
    processData: false,                // jQuery不要去处理发送的数据
    contentType: false,                // jQuery不要去设置Content-Type请求头
    success:function (data) {           //成功回调
        console.log(data);
    }
});

附:

/**
 * 将以base64的图片url数据转换为Blob文件格式
 * @param urlData 用url方式表示的base64图片
 */
function convertBase64UrlToBlob(urlData) {
    var bytes = window.atob(urlData.split(',')[1]); //去掉url的头,并转换为byte
    //处理异常,将ascii码小于0的转换为大于0
    var ab = new ArrayBuffer(bytes.length);
    var ia = new Uint8Array(ab);
    for(var i = 0; i < bytes.length; i++) {
        ia[i] = bytes.charCodeAt(i);
    }
    return new Blob([ab], {
        type: 'image/png'
    });
}

 内容摘自https://segmentfault.com/a/1190000006716454

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用URLEncoder类来对FormData进行编码。URLEncoder类位于java.net包中,它提供了用于编码URL参数的静态方法。要对FormData进行编码,你可以使用`URLEncoder.encode()`方法来编码每个参数的值,并将它们拼接成编码后的字符串。以下是一个示例代码: ```java import java.net.URLEncoder; ... // 假设有一个formData对象包含表单数据 FormData formData = new FormData(); formData.put("name", "John Doe"); formData.put("age", "25"); StringBuilder encodedFormData = new StringBuilder(); for (String key : formData.keySet()) { String value = formData.get(key); String encodedValue = URLEncoder.encode(value, "UTF-8"); encodedFormData.append(key).append("=").append(encodedValue).append("&"); } String encodedFormDataString = encodedFormData.toString(); // 移除末尾的"&"符号 encodedFormDataString = encodedFormDataString.substring(0, encodedFormDataString.length() - 1); System.out.println("Encoded FormData: " + encodedFormDataString); ``` 在上面的示例中,我们使用FormData对象来存储表单数据,然后使用URLEncoder类的encode()方法对每个参数的值进行编码,并将它们拼接成编码后的字符串。最后,我们移除字符串末尾的"&"符号,并打印出编码后的表单数据。这段代码使用了UTF-8字符集对参数值进行编码,你可以根据需要选择不同的字符集。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java请求第三方工具类;包含: json传参,get传参,formdata传参](https://blog.csdn.net/qq_43582260/article/details/113529116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [FormData详解](https://blog.csdn.net/walk_man_3/article/details/80858851)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值