使用HTML FIleSystem API将文件从src移动到dest

时间:2016-06-10 13:04:55

标签: angularjs html5 typescript electron html5-filesystem

这是一个非常简单的问题,但给我带来了很多麻烦。我想在本地文件系统中将文件从原点移动到目标。

我正在使用HTML5 FileSystem API。这是我的代码:

// Note: The file system has been prefixed as of Google Chrome 12:
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;

// window.requestFileSystem(type, size, successCallback, opt_errorCallback)

window.requestFileSystem(window.TEMPORARY, 1024 * 1024, (fs) => {
            this.copyResouce(fs.root, "/home/user/Escritorio/img.png", this.AppConfig.DEFAULT_RESOURCE_PATH + "img/");
        }, this.errorHandler);

private copyResouce(cwd, src, dest) {
       cwd.getFile(src, {}, (fileEntry) => {
             cwd.getDirectory(dest, {}, (dirEntry) => {
                    fileEntry.copyTo(dirEntry);
                });
             }, this.errorHandler);
        }

但是我得到 NOT_FOUND_ERR - 处理操作时找不到请求的文件或目录。

我在Electron App中使用了AngularJS + Typescript的堆栈。

有什么想法吗?

干杯, 阿贝尔

2 个答案:

答案 0 :(得分:1)

您是否使用Chrome进行测试? 请阅读http://lists.w3.org/Archives/Public/public-webapps/2014AprJun/0010.html 这个API已被W3C弃用,并且永远不会在所有导航器中实现,只能实现chrome。

可用文件也在沙箱中。你确定你的文件在里面吗?

答案 1 :(得分:0)

Electron将使用第1行的window.requestFileSystem,但是在第2行,您将传递基于webkit的路径(window.temporary)。我认为你应该通过本地文件系统根路径。我认为你可以添加fs节点模块而不是window.temporary,传递fs.root(root是特定于平台,在电子中我认为是file:///temporary/)并且在大多数情况下它都可以工作