是否可以从IE8中的浏览器上传文件到S3?

时间:2014-08-27 12:52:36

标签: file upload amazon-s3 internet-explorer-9 internet-explorer-10

现在我在javascript中有这段代码。

var file_object = $('#PHOTO').get(0).files[0];

the_form = new FormData(); 
the_form.append("AWSAccessKeyId", "TESTING");
the_form.append("acl", "authenticated-read");
the_form.append("policy", policy);
the_form.append("signature", signature);
the_form.append("Content-Type", "image/jpeg");
the_form.append("key", "test.jpg");
the_form.append("file", file_object);

$.ajax({
    url: "http://S3BUCKET.s3.amazonaws.com",
    type: "POST",
    data: the_form,
    processData: false,
    contentType: false
})

它在Chrome,Firefox中运行得很好,除了IE6,7,8,9。

原因是IE10之前不支持文件对象!

https://developer.mozilla.org/en-US/docs/Web/API/File

IE10之前是否有适用于浏览器的解决方案?

PS:代码示例会很好!!

1 个答案:

答案 0 :(得分:0)

没有Flash,很多东西绝对是不行的。我相信你引用的lib有一些Flash后备,但我不清楚他们是否可以处理所涉及的所有问题。这是我目前正在处理的问题,以下是问题:

  • 响应中的Content-Type标头。 IE(没有Flash中介)将尝试下载一个JSON内容类型,没有办法解决这个问题,我知道没有代理中间人来捏造标题。
  • 主机名映射。如果您没有映射到原始主机名,则IE iframe(非Flash后备)将不允许您从包含窗口中读取其内容。可能会发生火灾和遗忘,但是消耗s3的响应/检测错误可能不会。

我会更新这个答案,因为我会在未来几天内发现更多。这是一个大项目,所以我们有一些非常重要的要求,我想我会在接下来的一周左右学到很多东西。

这里有更详细的介绍(不是我的公司/项目/帖子):http://blog.fineuploader.com/2013/08/16/fine-uploader-s3-upload-directly-to-amazon-s3-from-your-browser/