当前位置: 首页 > 面试题库 >

HTML5 AJAX多个文件上传

麹高义
2023-03-14
问题内容

我遇到了这个简单的js ajax上传代码($.post由于某种原因,jquery 似乎不适用于HTML5),

    /* If you want to upload only a file along with arbitary data that
       is not in the form, use this */
    var fd = new FormData();
    fd.append("file", document.getElementById('file').files[0]);

    /* If you want to simply post the entire form, use this */
    //var fd = document.getElementById('form1').getFormData();

    var xhr = new XMLHttpRequest();        
    xhr.upload.addEventListener("progress", uploadProgress, false);
    xhr.addEventListener("load", uploadComplete, false);
    xhr.addEventListener("error", uploadFailed, false);
    xhr.addEventListener("abort", uploadCanceled, false);
    xhr.open("POST", "Upload.php");
    xhr.send(fd);

但是我这里有两个问题,

  1. 这条线在物体之后是什么意思FormData

fd.append("file", document.getElementById('file').files[0]);

为什么在那里需要ID?我能做些什么使用jQuery append()$('input[type=file]')

  1. 此ajax仅用于单个文件上传,如何更改多个文件上传?

问题答案:

这行在对象FormData之后是什么意思?

fd.append("file", document.getElementById('file').files[0]);

document.getElementById('file')得到<input type="file" id="file">由它的ID元件。该element.files[0]抓住从元件中的第一选择的文件。将fd.append("file", file)其追加到FormData与字段名的实例file。在fd稍后要被发送作为multipart/form-dataXHR请求体。

为什么在那里需要ID?我能做些什么使用jQuery append()$('input[type=file]')

该ID不是必需的。毕竟,这只是一个示例,以便能够<input type="file">通过其ID从文档中获取。需要注意的是,append()在这个例子中的功能是一部分的FormDataAPI,而不是与jQuery的混淆append()功能。另请注意,的第一个参数append()表示字段名称,而不是ID。它们相同只是一个巧合。

此ajax仅用于单个文件上传,如何更改多个文件上传

只需将多个字段附加到FormData。假设您有File[],这是一个示例:

for (var i = 0; i < files.length; i++) { 
    fd.append("file" + i, files[i]);
}

它会通过字段名是在服务器端可用file0file1等等。



 类似资料:
  • 问题内容: 我的测试需要在不同的浏览器中上传测试文件(我使用+ )。对于单个文件上传,一切正常。我只是发送路径 Firefox:我找不到正确的语法。 任何想法? 所有浏览器都有通用的语法吗? 问题答案: 据我所知,硒 仍然 不支持多个文件上传(请参阅google code上的问题 )。 至少有一种解决方法:显然创建一个包含所需输入字段的表单。这不是最佳的解决方案,因为它(可能)需要更改您的代码才能

  • 问题内容: 我遇到的情况是,我有一个表格,其中有一行,其中有两个文本字段条目,我必须上载该行的文件,并且这种行可以是“ N”,然后是可以在整个表单中输入的主文件,而这些文件是表单的一部分,我必须在单击保存按钮后立即提交所有这些文件。 我有点被ng-upload困扰,它需要一个api调用,而对于这种形式,我真的不能超过一个api调用。示例html代码如下: 问题答案: 这是文件值绑定指令示例.. h

  • 上面是代码 现在的问题是 上传多个文件的时候回调用多次接口,比如上传三个文件就回调用三次axios请求 现在需要解决的是 上传多个文件只执行一次axios请求

  • 问题内容: 有没有办法用Flask接收多个上传的文件?我尝试了以下方法: 然后打印内容 如果我上传多个文件,它将仅打印该集中的第一个文件: 是否可以使用Flask的内置上传处理方式接收多个文件?谢谢你的帮助! 问题答案: 你可以使用flask.request.files的方法getlist,例如:

  • 主要内容:1. 动作类,2. 结果页面,3. struts.xml,4. 示例,参考在上章节Struts2 文件上传示例, 用户允许选择一个文件并上传到服务器。在本教程中,您将学习如何允许用户将多个文件上传到服务器。 这里创建一个Web工程:strut2uploadfiles,来演示在多个复选框如何设置的默认值,整个项目的结构如下图所示: 1. 动作类 在Action类,可以使用列表或数组以存储上传的文件。 FileUploadAction.java 2. 结果页面 使用<s:f

  • 问题内容: 我无法正常上传多个文件。当我选择x个文件时,它成功完成,但是第一个文件被上传了x次,而其他文件则根本没有被上传。有人能指出我做错了吗? 形成: 处理文件: 问题答案: 如果有人感兴趣的话,可以像这样工作: 如果可能的话,很高兴获得带有Blob对象数组的可行解决方案,而不必要求request.args.get(“ __ UPLOADS”)。