西恩十月
西恩十月
  • 发布:2022-05-07 18:13
  • 更新:2023-11-28 15:48
  • 阅读:609

【报Bug】使用plus.io 移动照片之后,uni.chooseImage的页面照片还在,点击确定之后没有返回值。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.4.7

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: 小米8se

页面类型: nvue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
    <template>  
    <view class="body">  
        <button @click="test">test</button>  
    </view>  

</template>  

<script>  
    export default {  
        data() {  
            return {  

            }  
        },  
        onLoad() {  

        },  
        onShow() {  
            plus.cache.clear()  
        },  
        methods: {  
            test(){  
                uni.chooseImage({  
                    count: 1,  
                    sizeType: ['original'],  
                    sourceType: ['album'], //从相册选择  
                    success: (res) => {  
                        console.log(res)  
                        let oldPath = res.tempFiles[0].path  
                        let newLocalPath = 'file:///storage/emulated/0/.Android'  
                        let fileName = '/test.jpg'  

                        plus.io.resolveLocalFileSystemURL( newLocalPath, function( newEntry ) {  
                            plus.io.resolveLocalFileSystemURL( oldPath, ( entry )=> {  
                                entry.moveTo( newEntry,fileName, function( entry ) {  
                                    console.log("移动成功!")  
                                    uni.chooseImage({  
                                        count: 1,  
                                        sizeType: ['original'],  
                                        sourceType: ['album'], //从相册选择  
                                        success: (res1) => {  
                                            console.log(res1)  
                                            plus.cache.clear()  
                                        }  
                                    })  
                                }, function ( e ) {  
                                    console.log("移动失败:"+JSON.stringify(e));  
                                } );  
                            },(e)=>{  
                                console.log("操作老路径失败:"+JSON.stringify(e));  
                            });  
                        })  

                    }  
                })  
            }  
        }  
    }  
</script>  

操作步骤:
    uni.chooseImage({  
        count: 1,  
        sizeType: ['original'],  
        sourceType: ['album'], //从相册选择  
        success: (res) => {  
            let oldPath = res.tempFiles[0].path  
            let newLocalPath = 'file:///storage/emulated/0/.aaa'  
            let fileName = '/test.jpg'  
            plus.io.resolveLocalFileSystemURL( newLocalPath, function( newEntry ) {  
                plus.io.resolveLocalFileSystemURL( oldPath, ( entry )=> {  
                    entry.moveTo( newEntry,fileName, function( entry ) {  
                        console.log("移动成功!")  
                        uni.chooseImage({  
                            count: 1,  
                            sizeType: ['original'],  
                            sourceType: ['album'], //从相册选择  
                            success: (res1) => {  
                                console.log(res1)  
                            }  
                        })  
                    }, function ( e ) {  
                        console.log("移动失败:"+JSON.stringify(e));  
                    } );  
                },(e)=>{  
                    console.log("操作老路径失败:"+JSON.stringify(e));  
                });  
            })  
        }  
    })  

预期结果:

图片移动走之后,应该就要消失了

实际结果:

图片还在

bug描述:

使用 entry.moveTo,把DCIM文件夹的图片移动到自定义的文件夹。图片应该不在相册里面了,但是 uni.chooseImage,图片还在,而且点选确定之后,没有回调。
并且使用 plus.cache.clear(), 然后app切到后台再回来,该图片就不见了,变成黑色。

2022-05-07 18:13 负责人:DCloud_Android_zl 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

相册有数据库存储相关逻辑。该方式导致黑图出现这个问题我们会看下。 你这种从相册moveTo图片 属于违规行为 高版本系统会警告用户的。你可以选择拷贝但不能moveTo或删除

  • 西恩十月 (作者)

    这个我倒是试过了,复制然后删除原图片,我的小米会警告。但是单纯的移动,系统不会警告。可能系统不一样吧。

    2022-05-08 11:33

  • DCloud_Android_ST

    回复 l***@163.com: 移动到其他路径也属于删除行为

    2022-05-11 16:34

2***@qq.com

2***@qq.com

那请问一下现在使用h5+的plus.gallery.pick()要怎么获取图片原图?原图貌似是默认保存在DCIM路径下的,plus.io.resolveLocalFileSystemURL会报code 15错误。如果使用copyTo方法会不会导致文件件里多出来一堆重复图片?

要回复问题请先登录注册