javascript - 文件阅读器 - 再次上传相同的文件不起作用

标签 javascript jquery file filereader

我有一些像绘图应用程序。用户可以保存项目然后加载它们。当我第一次加载一个文件(例如project1.leds)时,在应用程序中进行一些更改但没有保存它,然后再次加载相同的文件(project1.leds)什么也没有发生。我无法多次加载同一文件。如果我加载另一个文件,它就可以工作。

代码:

$("#menu-open-file").change(function(e){
    var data=[];

    var file = null;
    file = e.target.files[0];
    console.log(file)
    var reader = new FileReader();
        reader.onload = function(e){
            data=JSON.parse(reader.result);
            x=data[0].SIZE[0];
            y=data[0].SIZE[1];
            if(x==15) x=16;
            if(x==30) x=32;
            if(x==60) x=64;
            if(y==15) y=16;
            if(y==30) y=32;
            if(y==60) y=64;
            createLeds(x,y,data,false,false);
            clearActiveTools();
            var svg = $('#contener').find('svg')[0];
                svg.setAttribute('viewBox','0 0 ' + x*20 + ' ' + y*20);
            $("#contener").css("width",x*20).css("height",y*20);
            $("#contener").resizable({
                aspectRatio: x/y,
                minHeight: 200,
                minWidth: 200,
            });
            wiFirst = $("#contener").width();
            hiFirst = $("#contener").height();
        }
        reader.readAsText(file);
});

我可以删除/删除缓存文件吗?它甚至缓存在浏览器中吗?

最佳答案

这是因为你正在调用 onchange 函数。如果您上传相同的文件,则文件输入的值与上次上传相比没有更改,因此不会被触发。这也解释了为什么如果您上传不同的文件它会起作用。无需清除缓存,您可以通过在读取文件后重置输入字段的值来解决此问题。

$("#menu-open-file").change(function(e){
    var data=[];

    var file = null;
    file = e.target.files[0];
    if(file !== ''){
      console.log(file)
      var reader = new FileReader();
      reader.onload = function(e){
            data=JSON.parse(reader.result);
            x=data[0].SIZE[0];
            y=data[0].SIZE[1];
            if(x==15) x=16;
            if(x==30) x=32;
            if(x==60) x=64;
            if(y==15) y=16;
            if(y==30) y=32;
            if(y==60) y=64;
            createLeds(x,y,data,false,false);
            clearActiveTools();
            var svg = $('#contener').find('svg')[0];
                svg.setAttribute('viewBox','0 0 ' + x*20 + ' ' + y*20);
            $("#contener").css("width",x*20).css("height",y*20);
            $("#contener").resizable({
                aspectRatio: x/y,
                minHeight: 200,
                minWidth: 200,
            });
            wiFirst = $("#contener").width();
            hiFirst = $("#contener").height();
        }
        reader.readAsText(file);
        $("#menu-open-file")[0].value = '';
  }
});

关于javascript - 文件阅读器 - 再次上传相同的文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26634616/

相关文章:

python - 如何在 Django 中访问通过表单集上传的图像?

javascript - 子菜单隐藏在谷歌地图后面

java - 使用 JSP 编写 JSON

javascript - 禁用按钮,直到单击一个单选按钮

javascript - 如何让数组正确显示?

jquery - 仅在 .each() 完成后继续执行

c++ - 使用某个程序打开文件会更改该程序的工作目录吗?

java - Paths.get 找不到文件 Windows 10 (java)

javascript - JQuery 动态添加回调

javascript - JQuery $.ajax() post - java servlet 中的数据