代码之家  ›  专栏  ›  技术社区  ›  user1063287

从现有表单创建FormData对象时,文件名是否自动附加并可访问?

  •  1
  • user1063287  · 技术社区  · 11 年前

    类型

    <form id="my_form">
    <input type="file" name="my_file">
    <input type="text" name="field_one">
    <input type="text" name="field_two">
    <button>send</button>
    </form>
    

    创建FormData对象

    var myFormData = new FormData($("#my_form")[0]);
    

    问题

    是的文件名 my_file 即使它还没有明确定义(用于DOM操作和插入数据库),也可以访问?

    This 状态:

    您还可以将文件或Blob直接附加到FormData对象, 这样地:

    data.append("myfile", myBlob, "filename.txt");

    但它没有指定在创建 FormData 对象。

    如果未自动附加,则是通过多个 append() 在哪种情况下可以定义文件名?

    1 回复  |  直到 11 年前
        1
  •  0
  •   Community Mohan Dere    8 年前

    文件名似乎是自动添加的(只是在Chrome中测试过,不确定在其他情况下是否不同)。

    再现步骤

    • http://jsfiddle.net/rwone/vsRSf/
    • 在开发人员工具中打开“网络”选项卡
    • 选择两个图像并单击按钮
    • 查看网络选项卡,您将看到文件名已定义

    enter image description here

    图像信息仅由两个参数定义,而不是第三个文件名参数:

    myFormData.append(name, file);
    

    基于这篇文章的原创小提琴:

    https://stackoverflow.com/a/21901886/1063287