【问题标题】:How to clone File objects in javascript?如何在javascript中克隆文件对象?
【发布时间】:2019-01-05 19:55:39
【问题描述】:

我想我可以像克隆其他对象一样克隆 File 对象:JSON.parse(JSON.stringify(file))

但是,JSON.stringify(file) 的计算结果始终为 "{}"。除了创建空对象并遍历文件对象的所有属性并将它们添加到其中之外,还有其他解决方法吗?

还有什么原因不能将文件对象转换为字符串?我虽然他们只存储有关磁盘上文件的信息,例如名称和路径,而不是文件内容。

【问题讨论】:

  • 与任何其他对象的方式相同 - 不是任何其他对象,而是普通对象。原因很清楚, JSON.stringify 只读取自己的可枚举属性,这已记录在案。目前尚不清楚您在谈论哪个文件,但对于浏览器文件,文件对象可能包含启动器的大小信息,如果他们不知道文件内容,这些信息将无法访问。您可以使用new File 创建一个新的,但不知道这是否可行。请提供stackoverflow.com/help/mcve 并更新问题,如果您有您要解决的具体问题。
  • new File([file], file.name) 工作正常。谢谢

标签: javascript json node.js file


【解决方案1】:

new File([blob], blob.name, { type: blob.type });

添加类型很重要。接受的答案错过了类型。

【讨论】:

    【解决方案2】:

    new File([file], file.name) 返回file 对象的副本

    【讨论】:

      【解决方案3】:

      使用这个-

      var newFileObject = {...file} OR Object.assign({}, ...file)
      

      或使用 -

      JSON.parse(file.toString())
      

      【讨论】:

      • 以“试试这个”开头的答案通常必须以 cmets 的形式发布。如果您不确定该解决方案是否有用,而 OP 没有先尝试它,那么这不是一个答案。在这种情况下,由于上述评论中提到的原因,这显然行不通。
      猜你喜欢
      • 2011-07-18
      • 2017-05-22
      • 2013-01-03
      • 2014-08-09
      • 2010-10-10
      • 1970-01-01
      • 2011-12-19
      相关资源
      最近更新 更多