首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Array.includes不能像预期的那样处理html文件上载和本地搜索

Array.includes不能像预期的那样处理html文件上载和本地搜索
EN

Stack Overflow用户
提问于 2020-03-03 21:46:29
回答 1查看 42关注 0票数 0

所以基本上我做了一个网站,允许用户上传一个.txt文件,并在使用shift密码加密后返回下载。

我有以下HTML代码

代码语言:javascript
复制
<div class="file-inp mainscreen-row-element level-2 enc">
   Upload Text File
</div>
<input type="file" accept=".txt" id="inp-elem" hidden />

我将一些数据存储在indexedDB中,如果还没有的话

代码语言:javascript
复制
localforage.getItem("encrypton-caesar-cipher").then(d => {
  if (d == null) {
    localforage.setItem("encrypton-caesar-cipher", {
      enc: { inp: { text: [], files: [] }, out: { text: [], files: [] } },
      dec: { inp: { text: [], files: [] }, out: { text: [], files: [] } },
      ai: { inp: { text: [], files: [] }, out: { text: [], files: [] } }
    });
  }
});

我的javascript包含以下代码

代码语言:javascript
复制
$(".file-inp").on("click", e => {
  $("#inp-elem").trigger("click");
  $("#inp-elem").on("change", () => {
    const f = $("#inp-elem").prop("files");
      localforage.getItem("encrypton-caesar-cipher").then(d => {
        if (!(d.enc.inp.files.includes(f))) {
          d.enc.inp.files.push(f);
          localforage.setItem("encrypton-caesar-cipher", d);
        }
      });
  });
});

因此,当用户上传文件时,我在localForage的帮助下将对象存储在indexedDB中,并且我有以下条件

代码语言:javascript
复制
if (!(d.enc.inp.files.includes(f)))

因为我想确保不会重复存储相同的对象

现在,如果我上传一个文件a.txt并转到开发工具,它会显示在那里,如果再次上传,我的indexedDB数据不会改变,这是我所期望的,但当我刷新页面,然后再次上传a.txt时,相同的对象被存储并在开发工具中显示两次,如果我重新加载页面并上传相同的文件,这种情况会继续增加。

我想知道我做错了什么,或者是否有可能的解决办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-03 22:11:03

问题是两个具有相同内容的javascript对象不被认为是相等的:

代码语言:javascript
复制
const object1 = {foo: 'bar'};
const object2 = {foo: 'bar'};
object1 == object2 // false
// but
object1 == object1 // true

但这适用于像string这样的原语:

代码语言:javascript
复制
const string1 = 'foo';
const string2 = 'foo';
string1 == string2 // true

也许您想要的是使用$("#inp-elem").val(),它表示所选文件的路径,而不是文件本身。如果path不是你想要的,你也可以计算文件内容哈希。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60508647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档