问题标签 [cordova-plugin-file]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2676 浏览

cordova - resolveLocalFileSystemURL 不是一个函数 - angular2

我正在学习angular2使用打字稿开发移动应用程序。尝试写入日志并将它们存储在设备位置。

我正在使用cordova文件插件来实现这一点,但是当我尝试使用window.resolveLocalFileSystemURL获取目录时,浏览器会抛出错误“window.resolveLocalFileSystemURL”不是函数。

0 投票
1 回答
973 浏览

ios - window.resolveLocalFileSystemURL 返回代码 5

最近我发现我不能再从我的应用程序(iOS)上传图片和视频了。经查,window.resolveLocalFileSystemURL函数总是失败,返回{"code":5}。但是,直到最近它都运行良好,我没有遇到 Android 的这个问题。我的代码如下:

变量文件类似于 file:///var/mobile/Containers/Data/Application/UID/tmp/cdv_photo_021.jpg

你知道我应该怎么做才能让它工作吗?

0 投票
1 回答
1243 浏览

jquery - 如何使用cordova-plugin-file将文件读取到变量

我正在使用 cordova-plugin-file 来编写一个文本文件。我可以让插件<div>在模态弹出窗口上填充一个。这个片段完美地工作:

问题是,我需要将文件的内容返回给调用函数,这样我就可以在数据显示之前对其进行操作。

我阅读了我能找到的每个教程/示例,但没有一个示例显示如何对内容执行任何操作,除了填充 adiv或显示在console.log().

如何获取文本文件的内容作为返回值?

0 投票
0 回答
191 浏览

ios - 在 iOS 上使用 cordova-plugin-file 时,如何将文件保存到应用程序云容器中?

谈到 iOS 时,cordova-plugin-file 的文档有点模棱两可。我已经在我的应用程序中设置了一个沙盒的 iCloud 容器。但是从 cordova-plugin-file 文档中并不清楚使用哪个目录将文件放入沙盒云容器中。

我已经尝试过 cordova.file.syncedDataDirectory 和 cordova.file.documentsDirectory。

我知道这两个目录都有效,我可以在我的应用程序中保存和检索文件,但我不知道它们中的任何一个是否真的与我的应用程序中的 icloud 容器相关。

任何帮助,将不胜感激。

0 投票
2 回答
1129 浏览

cordova - cordova.file.externalRootDirectory 的问题

我想从外部目录读取文件,但 cordova.file.externalRootDirectory 总是返回内部设备内存“file:///storage/emulated/0/”???

0 投票
1 回答
1726 浏览

google-chrome - 撤销“存储文件”权限

我的问题与 Chrome 浏览器有关。我正在使用 Сordova 和https://github.com/apache/cordova-plugin-file开发一个应用程序。

此插件要求在最终用户浏览器上使用持久存储的权限,例如:

在此处输入图像描述

我很久以前点击了“允许”,这个弹出窗口不再显示。

现在,我想阻止我的用户弹出该弹出窗口,因此我需要在我的计算机中撤销该权限以执行一些测试。

我尝试了各种测试来更改浏览器设置,但我没有成功撤销该权限。我不是在谈论位置/闪存或其他权限,而是特定的存储权限。

如果有人知道如何撤销那个,我会很高兴测试它并提供我的反馈。

0 投票
1 回答
1292 浏览

android - 使用 cordova -file 插件看不到存储在 Android 设备上的文件

我正在尝试在我的cordova应用程序中显示存储在android设备上的文件列表,并且我正在使用cordova -file插件。但是,当我在我的应用程序中选择浏览按钮时没有看到该文件,但我看到了系统“我的文件”安卓应用程序中的文件。

这是我正在迭代的文件夹列表

在 android 手机上,我看到文件 bu 执行以下操作:

  1. 选择/设置/存储/内部存储

  2. 选择探索

  3. 在 emnu 上,标题显示 MyFiles>device storage

  4. 选择数据或下载..

    在设备上 cordova.file.externalRootDirectory 解析为 file:///storage/emulated/0/download

但是,我没有看到任何文件

这是我的代码

0 投票
1 回答
2122 浏览

android - cordova-plugin-file 从 extSD 播放视频文件

我需要让我的科尔多瓦包装的 html 显示图片并运行位于外部 SD 根目录之外的视频文件。在cordova-plugin-file的 git hub 上似乎没有地方可以问这些问题。

A)如果文件位于根目录下的这两个子目录中,我不确定我是否理解在下面的 2 B&C 中使用什么路径来完成此操作?

B)如果我只需要访问 ext SD,那么 3 B 中的所有这些值是否都是必需的?

到目前为止,这是我从文档中所知道的......但显然我没有完全正确,因为我得到了错误(见下文)

1)从CMD行设置环境

2)将这些添加到 index.html

A) cdvfile:索引页面的 Content-Security-Policy 元标记方案,例如:

二) <img src="cdvfile:///img/logo.png" />

C) <p><a href="cdvfile://video/MyVideo.mp4">Play video</a></p>

3)将这些添加到 config.xml

一种) <access origin="cdvfile://*" />

二) <preference name="AndroidExtraFilesystems" value="files,files-external,documents,sdcard,cache,cache-external,assets,root" />

单击视频链接时,我在 Android 上遇到的错误是...

=========== 编辑#1

现在尝试@DaveAlden 的推荐...使用使用[cordova.plugins.diagnostic][2]此配置调用的插件来定位 ExtSD 上的根路径以播放视频但得到错误(见下文)...

配置文件

索引.html

应用程序错误

尝试将其0001_a1.mp4放在这两个目录中的任何一个中...

和/或

==================== 编辑#2

@DaveAlden 建议尝试这三件事......

1)放在console.dir(details)里面getExternalSdCardDetails()看看插件找到了哪些本机路径。

结果:它在错误消息中给出了相同的路径

2)在同一设备上尝试示例项目( https://github.com/dpa99c/cordova-diagnostic-plugin-example ) 以查看 ext SD 示例是否有效。

结果 1:示例项目的构建失败...

@DaveAlden 对构建失败的响应...

您的构建环境中缺少/过时的 Android SDK 组件和/或正在使用过时的 cordova-android 平台版本。请参阅文档 ( https://github.com/dpa99c/cordova-diagnostic-plugin#building-for-android ) 和此问题 ( https://github.com/dpa99c/cordova-diagnostic-plugin/issues/161 )。

我的行动:

我通过运行此命令检查了 Android SDK Manager 以查看所需产品的所有 API 级别都处于同一级别

我运行了这个命令...

得到这个结果...

为什么我得到这个“当前未安装”?这可能是为什么诊断插件找不到 extSD 的正确路径的问题吗?

我运行了这个命令...

现在示例项目的构建成功!

请参阅示例诊断应用程序的屏幕截图,其中显示了 extSD 的路径。当我在我的应用程序中运行诊断插件时,这条路径看起来与我得到的路径非常不同。

在此处输入图像描述

请注意,“写入外部 SD 文件”按钮在按下时没有写入任何内容。我检查了我的文件管理器。

为示例项目提供的路径与诊断插件为我的应用程序提供的路径非常不同(请参阅下面的我的)。这些结果来自同一个 Galaxy S7。

我为我的应用程序运行了这个命令,但没有改变......

3) @DaveAlden 建议使用 Chrome 运行调试...接下来我会这样做。

发现这个... 在此处输入图像描述

============= EDIT 3 使用cordova-diagnostic-plugin成功地从extSD播放视频

就是这样...

最后一个障碍是,因为我有一部 Android 6+ 手机,所以我还必须添加一个函数来检查运行时读取 extSD 的权限。代码在编辑#2(见上文)中不断出现错误显示,就像它试图查看内部路径一样。一旦我添加了检查运行时权限的功能,它最终给出了正确的外部路径。提示...仅在清单中提供权限是不够的。你可以在这里读到它。感谢@DaveAlden 您的示例项目!

Android 运行时权限

Android 6 / API 23 引入了运行时权限的概念。与 >iOS 类似,除了在 Android 清单中列出之外,还必须在运行时请求某些“危险”权限。

运行时权限仅适用于运行应用程序的设备/模拟器具有 >Android 6.0 或更高版本并且应用程序是使用 API 23 或更高版本构建的。对于 Cordova,>这意味着使用 Cordova Android 平台版本 5.0.0 或更高版本。如果 > 应用程序是使用 4.x 或更低版本(API 22 或更低版本)构建的,则运行时权限 >不适用 - 在安装时授予所有权限。

添加到 Config.xml

感谢@DaveAlden 提供此代码...我只添加了检查运行时读取权限的功能。戴夫,您应该只将这段用于从 extSD 读取媒体文件的代码添加到您的项目示例中,这样您就不必像帮助我一样帮助下一个人了。:)

添加到 Index.html

添加到 Index.js

添加 jQuery 的本地文件副本(在此项目中找到一个https://github.com/dpa99c/cordova-diagnostic-plugin-example):

0 投票
3 回答
6123 浏览

ios - Unsupported URL error for a cdvfile://

Problem:

In my app, I want to access an image through cordova wkwebview. The HTML element looks as follows.

While loading this, I get error "Failed to load resource: unsupported URL". I am working with iOS 10.2.

Things verified/tried:

If list of files present in "cordova.file.dataDirectory" under folder "MyFolder" is checked, I do see the "file.jpg" present there. It has the native URL as file:///var/mobile/Containers/Data/Application/app_id/Library/NoCloud/MyFolder/file.jpg.

I have added "img-src 'self' cdvfile: " to the Content-Security-Policy.

I have added following in the config.xml

There are no special (non-ASCII) characters in the URL as mentioned in threads relating to this error. What else could be the reason of "Unsupported URL"?.

Is the way I am accessing cdvfile:// path incorrect?

Update

I came across a link (forgot to capture that) saying the webview needs relative path and hence cdvfile:// would not work. I tried to change the image source to a relative path by changing it to "../../../../../../../../..//var/mobile/Containers/Data/Application/app-id/Library/NoCloud/MyFolder/file.jpg" and I could now see a new error - "Failed to load resource: The operation couldn’t be completed. Operation not permitted"

I could get the image working by "reading" the contents of the file and passing that base64 data as image source. But that is not how it should be, should it?

0 投票
1 回答
908 浏览

android - 如何使用cordova-plugin-file在cordova应用程序之间共享数据?(安卓、IOS)

我有两个应用程序,它们都应该写入/读取一些 txt 文件。最合乎逻辑的方法是使用cordova-plugin-file。但是,我找不到直接明确解释它的资源。

好消息是有一个名为 shared directory 的 URL cordova.file.sharedDirectory,这正是我所需要的,但它仅适用于 BlackBerry 10。(虽然我需要它们用于androidIOS

对于安卓:

来自插件的文档;

如果安装了 SD 卡,或者如果有一个大的内部存储分区可用(例如在 Nexus 设备上),那么持久文件将存储在该空间的根目录中。这意味着所有 Cordova 应用程序都可以看到卡上的所有可用文件。

如果 SD 卡不可用,那么以前的版本会将数据存储在 /data/data/ 下,这将应用程序彼此隔离,但仍可能导致数据在用户之间共享。

因此,据我了解,如果有 SD 卡,可以轻松共享数据(我们不能假设所有用户都有 SD 卡)。否则应用程序的数据被隔离但仍然可以共享。但问题是如何?知道应用程序的路径已经足够了,还是有一些限制可以访问其他应用程序的数据?

对于IOS:

我绝对不确定使用哪个 URL 在应用程序之间共享数据。