【问题标题】:javascript creating a file from URLjavascript从URL创建文件
【发布时间】:2016-05-15 04:23:24
【问题描述】:

我正在使用第 3 方库,它希望通过 HTML 文件系统加载文件,如下所示:

<input id="fileupload" type="file" onchange="LoadAndDisplayFile(this.files[0])">

这很好用,除了我想将 url 传递给存储在服务器上的文件,而不是让用户上传文件。

我尝试使用:

var myFile = new File ("path/to/file");

希望我能够将myFile 传递给LoadAndDisplayFile() 但我收到以下错误:

未捕获的类型错误:无法构造“文件”:需要 2 个参数,但只有 1 个存在。

我确定这是一个菜鸟问题,但我在这里错过了什么?

【问题讨论】:

  • 取决于“第 3 方”脚本的作用?
  • Uncaught TypeError: Failed to construct 'File': 2 arguments required, but only 1 present. 好吧,所以传递 2 个参数,而不是一个

标签: javascript


【解决方案1】:

你不能创建一个只给它一个 URL 的 File 对象。

正确的方法是通过Http请求获取文件并读取,如下:

var blob = null
var xhr = new XMLHttpRequest()
xhr.open("GET", "path/to/file")
xhr.responseType = "blob"
xhr.onload = function() 
{
    blob = xhr.response
    LoadAndDisplayFile(blob)
}
xhr.send()

【讨论】:

  • 感谢您的回答。为了使您的解决方案正常工作,我只需要使用以下命令从 blob 创建一个新的 File 对象:new File([blob], blob),然后是 LoadAndDisplayFile(file)
  • 好吧,我虽然 File 对象的创建发生在 LoadAndDisplayFile 函数内部。
【解决方案2】:

我正在处理同样的错误,在花费时间后,我使用以下代码创建了新的 File 对象

                              new File(
                                [""],this.name,{
                                lastModified: 1605685839310,
                                lastModifiedDate: new Date(),
                                size: this.size,
                                type: "",
                                webkitRelativePath: ""
                            });

【讨论】:

    猜你喜欢
    • 2021-01-05
    • 2021-09-01
    • 1970-01-01
    • 2023-03-05
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2013-04-17
    相关资源
    最近更新 更多