Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用HTML5文件API';s getfile()?_Javascript_Html_Cordova_Fileapi - Fatal编程技术网

Javascript 如何使用HTML5文件API';s getfile()?

Javascript 如何使用HTML5文件API';s getfile()?,javascript,html,cordova,fileapi,Javascript,Html,Cordova,Fileapi,我正在为Windows 8开发Cordova应用程序,并尝试使用HTML5文件API获取文件并将其复制到另一个目标 我的www文件夹中有一个名为db的本地文件。我的javascript文件位于www/js文件夹中 我正在使用此代码创建requestFileSystem()的实例: 在我的initFS函数中,我需要获取我的文件,测试它是否存在于目标位置,如果不存在,则复制该文件。我想创建一个copyFile函数,并将其传递给“from”目录、文件和目标 window.requestFileSyst

我正在为Windows 8开发Cordova应用程序,并尝试使用HTML5文件API获取文件并将其复制到另一个目标

我的
www
文件夹中有一个名为
db
的本地文件。我的javascript文件位于
www/js
文件夹中

我正在使用此代码创建
requestFileSystem()
的实例:

在我的
initFS
函数中,我需要获取我的文件,测试它是否存在于目标位置,如果不存在,则复制该文件。我想创建一个
copyFile
函数,并将其传递给“from”目录、文件和目标

window.requestFileSystem(window.TEMPORARY, 2 * 1024 * 1024, initFS, errorHandler);

    function initFS(fs) {
        var fromLocation = [local db directory];
        var myFile = [file stored in the local db directory];
        var toLocation = [destination to copy to];
        copyFile(fromLocation, myFile, toLocation);
    }

    function errorHandler(err) {
        console.log(err.code);
    }

    function copyFile(fromLoc, src, toLoc){
        //copy the file to the new location
    }

我读过的所有示例都谈到如何创建和操作一个文件,但没有一个谈到如何操作一个已经存在的文件。

我解决这个问题的方法是使用插件运行SQLite语句,检查表是否存在。如果没有,则创建一个表并运行一组插入。如果表确实存在,则不会发生任何事情


如果数据库不存在,open db语句将始终创建一个数据库。如果数据库存在,它不会被覆盖。

请注意,这个API现在已经存在(Chrome是目前唯一支持它的API)。我正在使用它,希望它不会成为问题。但是,您有什么建议可以实现这一点吗?此文件系统是从系统中沙箱化的,操作系统文件系统也是沙箱化的,因此无法直接从系统自动加载文件。唯一的方法是让用户使用文件API和FileReader对象从系统中拾取文件,然后再次让用户通过数据URI或对象URL选择目的地,从而将其保存回去。这是出于安全考虑。请将其读取为ArrayBuffer(如果为二进制)或仅读取文本。然后进行更改,创建一个blob和一个对象url。在f.ex上设置url。A-tag或window.location(在IE中不起作用),并让用户单击链接/选择目标(blob可以采用mime类型)。(希望我没有误解你的问题-现在已经很晚了……))我的apps
db
文件夹中有一个预填充的数据库(myDB.db)。我需要将其复制到AppData文件夹,以便应用程序可以访问它。我可以使用
Windows.Storage.ApplicationData.current.localFolder.path
获取AppData文件夹。我正在使用一个cordova插件,该插件使用该位置创建该文件,但我需要复制而不是创建。
window.requestFileSystem(window.TEMPORARY, 2 * 1024 * 1024, initFS, errorHandler);

    function initFS(fs) {
        var fromLocation = [local db directory];
        var myFile = [file stored in the local db directory];
        var toLocation = [destination to copy to];
        copyFile(fromLocation, myFile, toLocation);
    }

    function errorHandler(err) {
        console.log(err.code);
    }

    function copyFile(fromLoc, src, toLoc){
        //copy the file to the new location
    }