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

使用可在IE9中运行的Ajax发送文件/上传文件

方苗宣
2023-03-14
问题内容

我需要使用IE9中必须支持的ajax上传文件。我在这里使用FormData 。我的代码如下所示:

var files = new FormData();
JQuery.each($('#file')[0].files, function (i, file) {
    files.append('file', file);
});

$.ajax({
    type: "POST",
    url: '/url',
    cache: false,
    contentType: false,
    processData: false,
    data: files,
    ...
});

这在Safari和Firefox中工作正常,但在IE9中失败,因为IE9不支持FormData。我尝试通过设置发送为文件:

data: $('#file')[0].files[0]
contentType: 'multipart/form-data'

由于数据以url编码形式发送,因此无法通过Java端进行解析,因此失败。任何有关如何解决此问题的帮助或指示,将不胜感激。我需要适用于所有浏览器的功能。

编辑:我不需要任何上传进度栏,因为文件通常很小。我不需要上传多个文件。我只需要上传一个文件。


问题答案:

不幸的是,您不能使用Ajax(XMLHttpRequest换句话说)来发送文件,但是您可以通过使用来实现类似的行为,其中<iframe/>带有的<formmethod="post"enctype="multipart/form-data"/>,其中包含的<inputtype="file"/>会使用“自然”方式发送用户选择的文件。您可以使用javascript调用,form.submit()然后<iframe/>从父文档中进行轮询,以检查文件上传过程是否完成。

jQuery有很多很棒的插件可以完成这项工作,例如,我最喜欢的一个。



 类似资料:
  • 问题内容: 如何使用Ajax在Struts 2中上传文件 问题答案: 下载Struts2 jQuery插件 ,并像通常使用Struts2一样进行操作。

  • 问题内容: 我正在创建用于发送邮件的邮件页面。我需要在发送前附加一些文件。我如何使用AJAX做到这一点?最初,我需要将这些文件存储在服务器中,然后必须发送邮件。通过单个发送按钮即可完成这些操作。 问题答案: 检查以下问题: JavaScript文件上传 如何为我的Web应用程序上传类似Gmail的文件? 什么是最好的多文件JavaScript / Flash文件上传器?

  • 问题内容: 我不想使用jQuery,但我想使用Ajax进行文件上传。那可能吗? 如果是这样,我在哪里可以找到有关信息/教程? 问题答案: 不,无法使用javascript执行此操作。 但是,为了给人“ AJAX”的感觉,您可以向隐藏的iframe提交表单,然后将脚本结果输出到其中,然后从那里进行处理。Google 并从那里开始。 如果您使用的是jQuery,并且您的表单中包含任何文件字段,也可以使

  • 问题内容: 嗨,我正在尝试使用此代码发送带有xmlhttprequest的文件。 但我收到此错误:请求被拒绝,因为未找到多部分边界,请帮助我。 问题答案: 没有这样的事情; 文件对象不应该以这种方式附加。 不发送文件。您必须使用对象将文件包装到post数据对象中: formData.append(“thefile”, file); xhr.send(formData); 之后,可以访问文件(如果您

  • 问题内容: 我知道有很多类似的问题,但是我仍然没有找到解决问题的方法。我正在尝试使用XMLHttpRequest上传文件,因此我开发了以下代码: PHP端脚本是: 但是var $ _FILES [‘file’]似乎为空,这意味着该文件未发送到服务器。然后,我决定在下面的代码中使用FormData对象 它可以正常工作,但文件大小只有8mb左右。当我尝试发送大小超过8mb的文件时,该var 再次变空

  • 问题内容: 我已经进行了很多搜索,以了解如何使用Ajax从表单上载文件,并发现xhr2应该可以做到。但是,我已经尝试过使用FormData对象,但它不起作用。 这是一个简单的html表单 这是“ post.php”文件,当以“老式”方式运行时,它可以正常工作: 这是“ upload.js” 您知道为什么它不起作用吗?控制台返回“未发送文件”。 非常感谢 ! 问题答案: 尝试替换代码: 有了这个: