我遇到了一些问题,而使用 cordova 插件文件传输。这是我的代码:
window.requestFileSystem(
LocalFileSystem.PERSISTENT,
0,
function onFileSystemSuccess(fileSystem) {
fileSystem.root.getFile(
"dummy.html", {create: true, exclusive: false},
function gotFileEntry(fileEntry) {
var sPath = fileEntry.fullPath.replace("dummy.html", "");
var fileTransfer = new FileTransfer();
fileEntry.remove();
fileTransfer.download( 'http://cordova.apache.org/images/cordova_bot.png', sPath + photo.original_name,
function (theFile) {
alert('success: ' + JSON.stringify(theFile));
console.log("download complete: " + theFile.toURI());
// showLink(theFile.toURI());
},
function (error) {
alert('error: ' + JSON.stringify(error));
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code: " + error.code);
},
true
);
})
},
function (error) {
alert('error request: ' + JSON.stringify(error));
}
);
返回fileTransfer.download的错误回调,错误代码为3,http 401。我已经更新了File和FileTransfer插件,我的cordova版本是4.3.0。还检查了我的config.xml
<access origin="*" />
但它就在那里我尝试添加头连接:关闭,但没有结果。尝试将下载的第4个参数设置为默认值(false)-没有运气。
在Android平板电脑上测试。
有人吗?谢谢!
6条答案
按热度按时间o7jaxewo1#
我找到了解决问题的“方法”。我所做的是将文件传输插件版本从0.5.0降级到0.4.8。
如果有人遇到类似的问题,请按以下步骤操作:
1.通过运行'cordova plugins list'然后'cordova plugin remove name_from_list'删除现有的文件传输插件
1.转到https://github.com/apache/cordova-plugin-file-transfer/releases并下载0.4.8版本的zip文件。
1.在Cordova应用程序的根目录下解压缩该文件
1.运行'cordova插件add path_to_unzipped_folder'
就是这样。看起来运行的不错,至少成功回调是返回的,没有真正测试更多的。
wooyq4lh2#
我个人不会创建一个文件,然后删除它只是为了获得一个目录URL。root是一个DirectoryEntry,因此包含了您希望在DirectoryEntry上看到的方法。
快一点。
更新
如果您倾向于使用文件删除方法,则应该在FileEntry上使用toURL(),而不是fullPath。我认为toURL()返回一个可以在整个HTML应用程序中使用的URL。
但正如我所说,fileSystem.root.toURL()更可取。示例代码如下:
因此,您的代码变为:
试试看会发生什么。听起来可能很愚蠢,但我认为
photo.original_name
是定义的?目录和文件名之间有个/?yks3o0rb3#
如果您的远程文件需要VPN才能访问,请确保您的设备已连接到VPN。
在我的情况下,我没有连接到设备上的VPN。
hlswsv354#
只需将下载URL更改为http://www.{{Domain name}}/abc.pdf
使用完整的URL与www
jobtbby35#
这对我很有效
2wnc66cl6#
我的问题与adhttp(not https)远程文件URL有关。
我用这个步骤解决了:
1.正在打开我的Project目标的info.plist文件
1.添加名为NSAppTransportSecurity的Key作为字典。
1.新增子键NSAllowsArbitraryLoads为Boolean,并将其值设置为YES。
RefLink:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection