Ionic2 Cordova相机插件如何限制相册选择文件的大小?
解决相册选择视频时限制文件大小的问题
好问题!可惜cordova-plugin-camera本身并没有提供直接在选择文件阶段限制大小的配置参数,但我们可以在获取到文件的URI后,借助cordova-plugin-file来读取文件大小,再做判断过滤。以下是具体的实现方案:
步骤1:确保安装必要插件
首先你需要安装文件操作插件,因为要读取文件大小:
cordova plugin add cordova-plugin-file
步骤2:修改代码,添加文件大小检查逻辑
在获取到FILE_URI后,我们用window.resolveLocalFileSystemURL解析文件,获取它的大小后和50MB(换算为字节是50 * 1024 * 1024 = 52428800)做对比:
const MAX_FILE_SIZE = 50 * 1024 * 1024; // 50MB 转换为字节单位 this.camera.getPicture({ quality: 50, destinationType: this.camera.DestinationType.FILE_URI, sourceType: this.camera.PictureSourceType.PHOTOLIBRARY, mediaType: this.camera.MediaType.VIDEO, }).then((fileUri) => { // 解析文件URI获取文件对象 window.resolveLocalFileSystemURL(fileUri, (fileEntry) => { fileEntry.file((file) => { if (file.size > MAX_FILE_SIZE) { // 文件超过限制,提示用户 console.log("文件大小超过50MB,请选择更小的文件"); alert("文件大小超过50MB,请选择更小的文件"); } else { // 文件符合要求,继续后续处理 console.log("文件大小符合要求,大小为:", file.size); // 这里编写你原本的处理逻辑,比如上传文件等操作 } }, (err) => { console.error("读取文件信息失败:", err); }); }, (err) => { console.error("解析文件URI失败:", err); }); }, (err) => { console.log("获取文件失败:", err); });
补充说明
- 这种方式属于事后检查,也就是用户选完文件后才判断大小,虽然不能在选择界面直接过滤,但能达到最终限制文件大小的效果。
- 如果需要更精准的体验(比如在选择界面就过滤大文件),可能需要寻找更专门的文件选择插件,但对于大多数场景,上面的方案已经足够实用。
内容的提问来源于stack exchange,提问作者Mathankumar
相关产品推荐
相关产品推荐

