uni-app 使用plus.io 移动照片后 uni.chooseImage页面照片未更新 点击确定无返回值
uni-app 使用plus.io 移动照片后 uni.chooseImage页面照片未更新 点击确定无返回值
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win10
HBuilderX类型:正式
HBuilderX版本号:3.4.7
手机系统:Android
手机系统版本号:Android 10
手机厂商:小米
手机机型:小米8se
页面类型:nvue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
```javascript
<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));
});
})
}
})
更多关于uni-app 使用plus.io 移动照片后 uni.chooseImage页面照片未更新 点击确定无返回值的实战教程也可以访问 https://www.itying.com/category-93-b0.html
相册有数据库存储相关逻辑。该方式导致黑图出现这个问题我们会看下。 你这种从相册moveTo图片 属于违规行为 高版本系统会警告用户的。你可以选择拷贝但不能moveTo或删除
更多关于uni-app 使用plus.io 移动照片后 uni.chooseImage页面照片未更新 点击确定无返回值的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个我倒是试过了,复制然后删除原图片,我的小米会警告。但是单纯的移动,系统不会警告。可能系统不一样吧。
回复 l***@163.com: 移动到其他路径也属于删除行为
那请问一下现在使用h5+的plus.gallery.pick()要怎么获取图片原图?原图貌似是默认保存在DCIM路径下的,plus.io.resolveLocalFileSystemURL会报code 15错误。如果使用copyTo方法会不会导致文件件里多出来一堆重复图片?
在使用 uni-app
开发时,如果你使用了 plus.io
来移动照片,并且发现 uni.chooseImage
页面照片未更新,点击确定无返回值,可能是由于以下原因导致的:
1. 移动照片后未更新文件路径
- 当你使用
plus.io
移动照片时,照片的文件路径可能已经发生了变化,但uni.chooseImage
并未感知到这一变化。 - 你需要确保在移动照片后,更新
uni.chooseImage
所使用的文件路径。
2. 异步操作未正确处理
plus.io
的移动操作是异步的,如果你在移动操作未完成时就调用了uni.chooseImage
,可能会导致uni.chooseImage
无法正确获取到最新的文件路径。- 你需要在
plus.io
的移动操作完成后,再调用uni.chooseImage
。
3. 文件路径权限问题
uni.chooseImage
可能无法访问你移动后的文件路径,尤其是当你将文件移动到应用沙盒之外的目录时。- 确保移动后的文件路径是
uni.chooseImage
可以访问的。
解决方案
1. 确保移动操作完成后再调用 uni.chooseImage
plus.io.moveFile(srcPath, destPath, function() {
console.log('文件移动成功');
// 移动成功后调用 uni.chooseImage
uni.chooseImage({
count: 1,
success: function(res) {
console.log('选择图片成功', res.tempFilePaths);
},
fail: function(err) {
console.log('选择图片失败', err);
}
});
}, function(err) {
console.log('文件移动失败', err);
});
2. 更新文件路径
- 如果你在移动文件后需要手动更新
uni.chooseImage
的文件路径,可以通过设置tempFilePaths
来实现。
3. 检查文件路径权限
- 确保移动后的文件路径是
uni.chooseImage
可以访问的。你可以将文件移动到应用的沙盒目录中,例如_doc
或_downloads
目录。
示例代码
// 假设你要将图片从 srcPath 移动到 destPath
let srcPath = '原始文件路径';
let destPath = '目标文件路径';
plus.io.moveFile(srcPath, destPath, function() {
console.log('文件移动成功');
// 移动成功后调用 uni.chooseImage
uni.chooseImage({
count: 1,
success: function(res) {
console.log('选择图片成功', res.tempFilePaths);
},
fail: function(err) {
console.log('选择图片失败', err);
}
});
}, function(err) {
console.log('文件移动失败', err);
});