ionic cordovaFileTransfer插件下载文件的时候不能获取大小。网上随便找张图片的链接下载就能获取大小。请问是需要设置什么权限吗
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用cordova-plugin-file-transfer
插件时,如果遇到无法获取下载文件大小的问题,这通常不是由权限直接引起的,因为该插件在下载文件时并不特别需要针对获取文件大小的权限。不过,确保应用具有足够的存储权限来读写文件是基本要求,这可以通过在Cordova项目的config.xml
中添加相应的权限标签来实现,例如对于Android平台:
<platform name="android">
<config-file parent="/*" target="AndroidManifest.xml">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
</config-file>
</platform>
但请注意,从Android 6.0(API 级别 23)开始,你需要在运行时请求这些权限。
关于无法获取下载文件大小的问题,可能的原因有:
服务器问题:确保你尝试下载的文件服务器正确设置了Content-Length头部信息。这个头部信息告诉客户端文件的大小,如果没有这个信息,插件可能无法提前知道文件大小。
网络问题:有时网络状况不佳或服务器响应慢,可能会导致头信息获取不全。
插件版本或兼容性问题:确认你使用的cordova-plugin-file-transfer
插件版本是最新的或者与你的Cordova及Ionic版本兼容。旧版本的插件可能存在已知问题。
代码实现问题:检查你的代码是否正确监听和处理了文件传输过程中的事件,特别是onprogress
事件,它可以在下载过程中提供文件传输的状态,包括当前下载的字节数,虽然这不是直接获取文件总大小的方式,但可以间接验证是否正确接收到文件大小信息。
如果你需要在下载前就获取到文件大小,一个替代方案是在实际调用download
方法之前,先发送一个HTTP HEAD请求到文件URL,HEAD请求会返回资源的元数据,包括Content-Length,从而获取文件大小,然后再进行下载操作。
希望这些建议能帮助你解决问题。如果问题依旧,请提供更详细的错误信息或代码片段以便进一步分析。