• FormData


    语法

    • var formData = new FormData(form)

    form--可选, 一个 HTML 上的 <form> 表单元素一一当指定了,这种方式创建的 FormData 对象会自动将 form 中的表单值也包含进去, 包括文件内容也会被编码之后包含进去

    例子

    第一种方式

    • var formData = new FormData() //当前为空
    • formData.append('username', 'BetiaStar') // 使用 FormData.append 来添加键/值对到表单里面

    第二种方式

    • <form id="myForm" name="myForm">
    •   <div>
    •     <label for="username">输入用户名</label>
    •     <input type="text" id="username" name="username">
    •   </div>
    •   <div>
    •     < for="useracc">输入账号:</label>
    •     < type="text" id="useracc" name="useracc">
    •   </div>
    •   <div>
    •     <label for="userfile">上传文件:</label>
    •     <input type="file" id="userfile" name="userfile">
    •   </div>
    • <input type="submit" value="Submit!">
    • </form>

    注意:所有的输入元素都需要有name属性,否则无法访问到值。

    • var myForm = document.getElementById('myForm')
    • formData = new FormData(myForm)

    方法

    append()

    • 这个方法有两个版本: 一个有两个参数的版本和一个有三个参数的版本
    • formData.append(name, value)
    • formData.append(name, value, filename)
    • name
    •   - value中包含的数据对应的表单名称
    • value
    •   - 表单的值。可以是 USVString 或者 Blob (包括子类型,如 File)
    • filename--可选
    •   - 传给服务器的文件名称 (一个 USVString ), 当一个 Blob 或者 File 被作为第二个参数的时候, Blob 对象的默认文件名是 "blob"。File 对象的默认文件名是该文件的名称

    注意: 如果你指定一个 Blob 作为数据添加到 FormData 对象中,文件名会被放在 "Content-Disposition" 头部(常常会根据浏览器变化而变化)传给服务器

    示例

    • // 下面的代码创建了一个空的 FormData 对象
    • var formData = new FormData()
    • // 你可以通过 FormData.append wangle对象里加入键值对
    • formData.append('username', 'BetiaStar')
    • formData.append('userpic', userfile.files[0], 'betiastar')
    • // 跟常规表单数据一样,你可以使用同一个名称添加多个值。例如(为了与 PHP 命名习惯一致在名称中添加了 [])
    • formData.append('hobby[]', sing, '唱歌')
    • formData.append('hobby[]', dance, '跳舞')
    • formData.append('hobby[]', run, '跑步')
    • // 这项技术使得多文件上传的处理更加简单,因为所得数据结构更有利于循环

    delete()

    • formData.delete(name)
    • name
    •   - 要删除的 Key 的名字
    • formDat.delete('username')

    entries()

    • formData.entries()
    • var formData = new FormData()
    • formData.append('key1', 'value1')
    • formData.append('key2', 'value2')
    • for(var iter of formData.entries()) {
    •   console.log(iter[0] + ', ' + iter[1])
    • }

    get()

    • formData.get(name)
    • name
    •   - 将要获取值的键名
    • formData.append('username', 'betiastar')
    • formData.get('username')

    getAll()

    • formData.getAll(name)
    • name
    •   - 将要获取值的键名
    • formData.append('hobby', 'sing')
    • formData.append('hobby', 'run')
    • formData.getAll('hobby')

    has()

    • formData.has(name)
    • name
    •   - 将要查询的键名
    • formData.append('hobby', 'sing')
    • formData.has('hobby')

    keys()

    • formData.keys()
    • var formData = new FormData()
    • formData.append('key1', 'value1')
    • formData.append('key2', 'value2')
    • for(var iter of formData.keys()) {
    •   console.log(iter[0] + ', ' + iter[1])
    • }

    set()

    • 该方法有两种使用方式,一个是传入两个参数,一个是传入三个参数
    • formData.set(name, value)
    • formData.set(name, value, filename)
    • name
    •   - 字段名称
    • value
    •   - 字段的值,如果是传入两个参数的方式,那么该值是一个 USVString,如果不是,将被转成一个字符串。如果是传入三个参数的方式,那么该值是一个布尔值 (Blob), 文件(File), 或者一个 USVString,如果不是,将被转成一个字符串。
    • filename--可选
    •   - 当第二个参数传递的是一个blob对象(Blob)或者file对象(File),filename参数就代表传给服务端的文件名(一个USVString)。Blob 对象的默认文件名是 "blob"。
    • formData.set('username', 'betiastar')

    注意:如果对 FormData 对象插入一个 Blob 对象(Blob),那么发送给服务器的请求头部(header)里的 "Content-Dispositon" 里的文件名称将会根据浏览器的不同而不同。

    values()

    • formData.values()
    • var formData = new FormData()
    • formData.append('key1', 'value1')
    • formData.append('key2', 'value2')
    • for(var value of formData.values()) {
    •   console.log(value)
    • }
  • 相关阅读:
    (创建型模式)Abstract Factory——抽象工厂模式
    (结构型模式)Composite——组合模式
    (行为模式)Command——命令模式
    (创建型模式)Singleton——单例模式
    Windows的Notepad++的插件
    Ubuntu的软件源更新常见问题及解决
    The following signatures were invalid: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key
    Ubuntu安装ImageMagick
    常见误操作之警惕
    Rails3.2.x new project启动错误:Could not find a JavaScript runtime.
  • 原文地址:https://www.cnblogs.com/webBlog-gqs/p/9923006.html
Copyright © 2020-2023  润新知