Javascript文件读取器和文件同步
问题是:我的电脑上有一个随机应用程序生成的文件。该应用程序可以在随机时间编辑该文件,而无需任何警告。我需要定期(比如每5秒或30秒)将文件发送到服务器。在此之前,我使用了一个小cURL脚本,但由于我经常需要从不同的工作站执行此过程,我想创建一个带有选择输入和启动此功能的按钮的小页面:Javascript文件读取器和文件同步,javascript,ajax,browser,synchronization,filereader,Javascript,Ajax,Browser,Synchronization,Filereader,问题是:我的电脑上有一个随机应用程序生成的文件。该应用程序可以在随机时间编辑该文件,而无需任何警告。我需要定期(比如每5秒或30秒)将文件发送到服务器。在此之前,我使用了一个小cURL脚本,但由于我经常需要从不同的工作站执行此过程,我想创建一个带有选择输入和启动此功能的按钮的小页面: var syncFunc = function(){ var reader = new FileReader(); reader.readAsText($("#file")[0].files[0])
var syncFunc = function(){
var reader = new FileReader();
reader.readAsText($("#file")[0].files[0]);
reader.onload = function() {
var datas = reader.result;
$.ajax({
url : 'callback',
type : 'POST',
data : {"data" : datas},
success : function(data) {
//do stuff
},
complete : function(data){
syncTimeout = setTimeout(syncFunc, 5000);
}
});
};
};
当我启动脚本时,一切都很顺利,直到应用程序更改了文件:有时(不总是)FileReader抛出DomeExceptionNotReadableError
和reader。结果包含null
。如果我从输入中重新选择该文件,则可以毫无问题地再次读取该文件,但如果我不这样做,任何后续的读取尝试都会失败。更让我头疼的是,这种情况实际上是以随机方式发生的,对所选文件的相同编辑有时不会产生错误
此外,如果我尝试使用FormData发送文件,则会读取并发送该文件(我可以使用Inspector检查并检查发出的HTTP请求),但服务器会抛出错误“上载未完成”)
知道吗?这个其他应用程序编辑文件需要多长时间?可能因为同时读写而感到不安。在Bort或OneError上重试是否总是失败,或者最终会成功?我不认为这是问题所在,因为如果在阅读前30秒进行编辑,也会发生错误。使用onabort/onerror总是失败