自动上传,即使它在Firefox的改变本地文件

问题描述 投票:0回答:1

我要寻找一个解决方案,可以让浏览器不断上传最初由用户选择的本地文件,即使该文件被编辑。我有一个镀铬有效的解决方案,但Firefox停止上传一旦文件被编辑。这个代码粘贴下面。

function readSingleFile(e) {
  var readers = new Array();
  setInterval(function () {
  var file = e.target.files[0];
  readers.push(new FileReader());
  readers[readers.length-1].onload = function(e) {
    var contents = e.target.result;
    // Display file content
    displayContents(contents);
    console.log(contents);
  };
  readers[readers.length-1].readAsText(file);
}, 5000);
}

function displayContents(contents) {
  var element = document.getElementById('file-content');
  element.innerHTML += contents;
}

document.getElementById('file-input').addEventListener('change', readSingleFile, false);
javascript html5 filereader
1个回答
0
投票

文件对象在Chrome中是“活” - 更改文件的长度和fileObject.length的价值再次读取变化时,读取文件的lastModified属性返回最近一次修改的日期和时间,并读取该文件的内容返回更新的内容(如在规定后)。

文件对象不会在这个时候住在Firefox浏览器。通过阅读fileObject.length返回的值保持不变,即使文件长度发生了变化,读取文件的lastModified属性返回创建文件引用时从时间戳。尝试读取更新的文件会导致文件读者的onerror处理与被称为“NotReadableError:文件无法读取”作为参数。

File API specification仍处于2月1日至2019年服用文件状态的快照磁盘上(名称,长度和最后修改日期)的File Interface section会谈的编辑草案:

如果一个文件目标是从磁盘上的文件始发一个字节序列的参考,那么它的快照状态应当在创建File对象的时间设置为磁盘上的文件的状态。

并与下面的注释(重点煤矿)如下它:

注:这是为了实现对用户代理一个不平凡的要求,因此不是必须的,但一个应当[RFC2119]。用户代理应努力有一个文件对象的快照状态在参考所用的时间设置为磁盘上的底层存储的状态。如果该文件在磁盘上修改下列参考已花费的时间,文件的快照状态将底层存储的状态而异。用户代理可以使用修改的时间戳和其他机制,以保持快照状态,但是这是留给实现细节。

我对此的解读是,火狐,在这个阶段标准的发展,是不是要执行Chrome的行为是“兼容”要求。或者选择不 - 同时如果Firefox在未来一段时间内通过了该提案草案我也不会感到惊讶。

最后,我相当怀疑有在这个时候为您的要求Firefox的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.