formdata 赋值_FormData

这篇博客详细介绍了FormData对象在模拟HTML表单、异步上传二进制文件,尤其是文件上传过程中的应用。它阐述了如何将HTML表单转化为FormData对象,通过Ajax发送POST请求,并利用formidable模块在服务器端解析数据。此外,还讲解了如何展示文件上传进度,并探讨了set和append方法的区别。对于前端开发者,理解并掌握FormData对于实现高效、安全的文件上传至关重要。
摘要由CSDN通过智能技术生成

1. FormData对象的作用:

① 模拟HTML表单,相当于将HTML表单映射成表单对象,自动将表单对象中的数据拼接成请求参数的格式

② 异步上传二进制文件

2. FormData对象的使用:

① 准备HTML表单

注意:

这个表单不需要请求方式和请求地址,这些内容可以在Ajax中设置。

formdata对象不能用于get请求,因为formdata的数据要放到send()方法中,而get请求方式的请求参数只能放在请求地址的后面。

表单中的input控件必须要有name属性,因为当我们把表单提交到服务器的时候,表单的name属性会作为请求参数的属性名字。

表单中的提交按钮不是submit,如果是submit的话,点击会有默认的提交行为。

表单对象的好处是,不需要我们单独的一个一个的去获取指定的表单控件的值。

② 将HTML表单转化为formData对象

var form = document.getElementById('form');var formData = new FormData(form);

③ 提交表单对象

xhr.send(formData);

注意:服务器端bodyParser模块(用来处理post请求)不能解析formData对象表单数据,我们需要使用formidable模块进行解析

//解析客户端传递过来的FormData对象

form.parse(req, (err, fields, files) =>{...})//第一个参数是错误对象,第二个参数保存的是表单中普通的请求参数,第三个参数保存的是和文件上传相关的信息

3. FormData对象的实例方法:

① 获取表单对象中属性的值

formData.get('key');

② 设置表单对象中属性的值

formData.set('key', 'value');

③ 删除表单对象中属性的值

删除属性的应用场景:输入两次密码(原密码和确认密码),但是提交给服务器的时候只用提交一份,所以需要删除掉确认密码。

formData.delete('key');

④ 向表单对象中追加属性值

formData.append('key', 'value');

注意:set方法与append方法的区别是,在属性名已存在的情况下,set会覆盖已有键名的值,append会保留两个值。

4. FormData二进制文件上传:

var file = document.getElementById('file')//当用户选择文件的时候

file.onchange = function() {//创建空表单对象

var formData = newFormData();//将用户选择的二进制文件追加到表单对象中

formData.append('attrName', this.files[0]);//配置ajax对象,请求方式必须为post

xhr.open('post', 'www.example.com');

xhr.send(formData);

}

注意:用户选择的文件中的files属性是文件集合,即使只有一个值也是集合,需要用files[0]的形式表示(一般每次都只是选择一个文件上传)

5. FormData文件上传进度展示:

0%

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值