当前位置: 代码迷 >> 综合 >> FormData 上传
  详细解决方案

FormData 上传

热度:91   发布时间:2023-12-25 08:51:44.0

FormData 对象的作用

  • 模拟HTML表单,相当于将HTML表单映射成表单对象,自动将表单对象中的数据拼接成请求参数的格式
  • 异步上传二进制文件

formData 对象的使用

1、准备 HTML 表单

<form id ="form"><input  type = "text"  name ="username" /><input  type = "password"  name ="username" /><input  type = "button" id= "btn"  />
</form>var form = document.getElementById("form")
var btn =  document.getElementById("btn")
btn.onclick = function(){
    
// 讲普通的 HTML 表单转坏为 表单对象var  formData  =  new FormData (form);// 创建ajax 对象var  xhr = new XMLHttpRequest();// 对ajax对象进行配置xhr.open("post"," 地址")xhr.send(formData )// 监听 xhr 对象 下面 的 onlod 事件xhr,onload = function () {
    // 对象http 状态码 进行判断if (xhr.status == 200 ) {
    
}}
}

实例方法

formData 对象的实例方法 操作的是name的值
注意: set 方法和 append 方法的区别是 在属性已经存在的情况 下 set 会覆盖已有的值 append 会保留两个值

1、获取表单对象中的值

formData.get("key")

2、设置表单对象中的属性值

formData.set("key" ,“value”)

3、删除表单表单对象属性的值

formData.delete("key")

4、向表单对象中追加属性的值

formData.append("key","value") 

FormData 二进制文件上传

<input type ="file" id ="file"/>
var file = document.getElmentByid('file')
// 当用户选择文件的时候
file.onchang =  function () {
    // 将用户选择的二进制文件追加到表单对象中formData.append("attrName",this.files[0]);// 配置 ajax对象 请求方式必须为 post xhr.open("post","www.example.com");
}

formData 文件上传进度展示

// 当用户选择文件的时候
file.onchange = function () {
    // 文件上传过程中持续触发 onprogress事件xhr.upload.onprogress = function (ev) {
    // 当前上传文件大小/文件总大小 再将结果转换为百分数// 将结果赋值给进度条的宽度属性bar。style.width = (ev.loaded / ev.total) * 100 + "%"
}}

FormData 文件上传图片即时预览

在我们将图片上传到服务端以后 服务端通常会将图片地址作为响应数据传递到客户端,客户端可以从相应数据中获取图片地址,然后将图片再展示在页面中