开发者社区 问答 正文

ionic cordovaFileTransfer插件下载文件不能获取大小。

ionic cordovaFileTransfer插件下载文件的时候不能获取大小。网上随便找张图片的链接下载就能获取大小。请问是需要设置什么权限吗

展开
收起
呐勒哆 2017-09-07 18:50:24 3081 分享 版权
阿里云 AI 助理回答

在使用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)开始,你需要在运行时请求这些权限。

关于无法获取下载文件大小的问题,可能的原因有:

  1. 服务器问题:确保你尝试下载的文件服务器正确设置了Content-Length头部信息。这个头部信息告诉客户端文件的大小,如果没有这个信息,插件可能无法提前知道文件大小。

  2. 网络问题:有时网络状况不佳或服务器响应慢,可能会导致头信息获取不全。

  3. 插件版本或兼容性问题:确认你使用的cordova-plugin-file-transfer插件版本是最新的或者与你的Cordova及Ionic版本兼容。旧版本的插件可能存在已知问题。

  4. 代码实现问题:检查你的代码是否正确监听和处理了文件传输过程中的事件,特别是onprogress事件,它可以在下载过程中提供文件传输的状态,包括当前下载的字节数,虽然这不是直接获取文件总大小的方式,但可以间接验证是否正确接收到文件大小信息。

如果你需要在下载前就获取到文件大小,一个替代方案是在实际调用download方法之前,先发送一个HTTP HEAD请求到文件URL,HEAD请求会返回资源的元数据,包括Content-Length,从而获取文件大小,然后再进行下载操作。

希望这些建议能帮助你解决问题。如果问题依旧,请提供更详细的错误信息或代码片段以便进一步分析。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答标签:
问答地址: