【问题标题】:HTML5 FileReader alternativeHTML5 FileReader 替代品
【发布时间】:2011-07-31 01:30:50
【问题描述】:

我需要一些有关 HTML5 的帮助。我有一个脚本可以遍历所有上传的文件并获取每个文件的详细信息。目前我正在使用包括 FileReader 在内的 HTML5 技术。 FileReader 功能仅适用于 Chrome 和 Firefox,因此我正在寻找一种适用于所有其他浏览器的替代方法。

我看到了 Stack Overflow 问题 Flash alternative for FileReader HTML 5 API,但我不知道如何使用这个 Flash 东西,也没有任何其他解决方案,所以我可以遍历所有上传的文件并获取每个文件的详细信息(可在 Safari 和 Internet Explorer 中使用)?

【问题讨论】:

  • 如何使用这个闪存东西不是更好的问题吗?
  • 好吧,但这个闪存的东西似乎并不完美。我想获得更多关于替代品的想法。如果有人可以帮我设置这个 flash 的东西,我也想要。

标签: html filereader


【解决方案1】:

最终根本不使用 FileReader,而是遍历 event.files 并通过 files[i] 获取每个文件,并通过 XHR 使用 FormData 对象发送 AJAX 请求(对我有用,因为我决定不需要获取文件数据):

var xhrPool = {};
var dt = e.dataTransfer;
var files = (e.files || dt.files);
for (var i = 0; i < files.length; i++) {
    var file = files[i];
    // more code...

    xhrPool[i] = getXMLHttpRequest();
    xhrPool[i].upload.onprogress = uploadProgress;
    initXHRRequest(xhrPool[i], i, file);
    data = initFormData(i, file);

    xhrPool[i].send(data);
}

function initFormData(uploaded, file) {
    var data = new FormData();
    data.append(uploaded, file);
    // parameters...

    return data;
}

function uploadProgress() {
    // code..
}

function initXHRRequest(xhr, uploaded, file) {
    // code... onreadystatechange...
    xhr.open("POST", "ajax/upload.php");
    xhr.setRequestHeader("X-File-Name", file.name);
}

function getXMLHttpRequest() 
{
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    }
    else {
        try {
            return new ActiveXObject("MSXML2.XMLHTTP.3.0");
        }
        catch(ex) {
            return null;
        }
    }
}

【讨论】:

  • 您在遍历input.file[0] 吗?因为我也在寻找替代方案
【解决方案2】:

Safari 是第一个真正实现 HTML5 文件 API 的,并且有几个演示。 Andrea Giammarchi 有a nice description on his blog。有几个框架也可以处理这个问题,它们也有 Internet Explorer 的后备。 Fancyupload 是我想到的。

【讨论】:

  • 注意:尽管 Fancyupload 具有优雅的降级功能,但它依赖于 Flash 才能按预期工作。
猜你喜欢
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多