a***@163.com
a***@163.com
  • 发布:2022-05-09 17:27
  • 更新:2022-05-09 17:44
  • 阅读:400

【报Bug】启动后首次调用uni.chooseImage返回压缩图片有效期只有5s左右

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 家庭中文版 版本号:20H2 内部版本:19042.1110

HBuilderX类型: 正式

HBuilderX版本号: 3.4.9

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: 荣耀V20

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
                let [err, res] = await uni.chooseImage({  
                    sourceType: ['album'],  
                    sizeType: ['compressed']  
                });

不限制sizeType也可以,选择的时候不勾选【原图】一样可以复现。

完整测试Demo代码:

<template>  
    <view class="content">  
        <image class="logo" src="/static/logo.png"></image>  
        <view class="text-area">  
            <text class="title">{{title}}</text>  
        </view>  
        <button @click="selImgs">选择图片</button>  
    </view>  
</template>  

<script>  
    let timer = null;  
    export default {  
        data() {  
            return {  
                title: 'Hello'  
            }  
        },  
        onLoad() {  

        },  
        methods: {  
            async selImgs(){  
                clearInterval(timer);  
                let [err, res] = await uni.chooseImage({  
                    sourceType: ['album'],  
                    sizeType: ['compressed']  
                });  
                if(err){  
                    console.error('choose error:', err);  
                    return;  
                }  
                let initStart = new Date() / 1;  
                timer = setInterval(async () => {  
                    let succNum = await this.checkImgInfos(res.tempFiles);  
                    let cost = new Date() / 1 - initStart;  
                    this.title = '有效图片:' + succNum + ', valid for ' + cost + ' ms';  
                    if(!succNum){  
                        clearInterval(timer);  
                    }  
                }, 100);  
            },  
            async checkImgInfos(images){  
                let succNum = 0;  
                for(let img of images){  
                    let [err, res] = await uni.getFileInfo({filePath: img.path});  
                    if(!err && res.size){  
                        succNum += 1;  
                    }  
                }  
                return succNum;  
            }  
        }  
    }  
</script>  

操作步骤:

新建vue页面,运行到手机,即可复现。
第一次返回的临时图片有效期只有几秒,后面再调用有效期就长了。

预期结果:

每一次调用此接口返回临时图片路径,在整个应用会话运行期间都有效。

实际结果:

第一次调用返回有效期只有2~5s,然后会报文件不存在错误。
后续调用正常。

bug描述:

测试机型:荣耀V20,一加7Pro,红米K40游戏版。都有问题。

运行到Android手机,指定返回压缩图片,从相册选择。
应用启动后首次调用chooseImage返回的图片大概只在2~5s内有效,然后就会被自动删除。
之后再调用这个接口返回的临时图片有效期都很长,持续到整个应用运行结束。

示例工程代码见附件,直接运行到手机,选择本机图片即可测试

2022-05-09 17:27 负责人:无 分享
已邀请:
小枫叶

小枫叶 - 外包接单加v:wlmk1234567 注明来意

已复现

该问题目前已经被锁定, 无法添加新回复