HarmonyOS鸿蒙Next中利用@ohos.file.picker中save方法,无法实现图片保存到相册功能
HarmonyOS鸿蒙Next中利用@ohos.file.picker中save方法,无法实现图片保存到相册功能
官方提供的这个代码无法实现保存图片功能,点击只有警告:
import picker from '@ohos.file.picker'
async function example() {
try {
let PhotoSaveOptions = new picker.PhotoSaveOptions()
PhotoSaveOptions.newFileNames = ['PhotoViewPicker01.jpg', 'PhotoViewPicker01.mp4']
let photoPicker = new picker.PhotoViewPicker()
photoPicker.save(PhotoSaveOptions).then((PhotoSaveResult) => {
console.log('PhotoViewPicker.save successfully, PhotoSaveResult uri:' + JSON.stringify(PhotoSaveResult))
}).catch((err) => {
console.error('PhotoViewPicker.save failed with err: ' + err)
})
} catch (err) {
console.error('PhotoViewPicker failed with err: ' + err)
}
}
官方提供的这个代码无法实现保存图片功能,点击只有警告:
01-11 20:16:17.505 26024-10730/com.example.myapplication I 0FEFE/JsApp: [picker] config: {“action”:“ohos.want.action.CREATE_FILE”,“parameters”:{“startMode”:“save”,“key_pick_file_name”:[“PhotoViewPicker01.jpg”,“PhotoViewPicker01.mp4”],“saveFile”:“PhotoViewPicker01.jpg”}}
更多关于HarmonyOS鸿蒙Next中利用@ohos.file.picker中save方法,无法实现图片保存到相册功能的实战教程也可以访问 https://www.itying.com/category-93-b0.html
感谢这篇帖子的回答,让我找到了正确的路,终于实现了公共目录读写功能,应用备份/恢复有指望了;为了感谢大家,整理了帖子如下,望后来者无需再踩N多坑。
https://developer.huawei.com/consumer/cn/forum/topic/0202148239705951102?fid=0102683795438680754
更多关于HarmonyOS鸿蒙Next中利用@ohos.file.picker中save方法,无法实现图片保存到相册功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
试一下这个代码,可以保存成功
export async function savePictureToAlbum(buffer: ArrayBuffer):Promise<string>{
try {
const photoSaveOptions = new picker.PhotoSaveOptions();
let imgName = "IMG_" + Date.parse(new Date().toString()) + ".jpg";
photoSaveOptions.newFileNames = [imgName];
let photoViewPicker = new picker.PhotoViewPicker();
let photoSaveResult = await photoViewPicker.save(photoSaveOptions);
if(photoSaveResult.length === 0){
throw new Error("用户取消保存")
}
let file = fs.openSync(photoSaveResult[0], fs.OpenMode.READ_WRITE);
await fs.write(file.fd, buffer);
fs.closeSync(file);
return new Promise((resolve) => {
resolve(photoSaveResult[0])
})
} catch (error) {
return new Promise((resolve, reject) => {
reject(error);
});
}
}
请问点击后提示这个是什么意思,需要添加什么吗:
[picker] config: {"action":"ohos.want.action.CREATE_FILE","parameters":{"startMode":"save","key_pick_file_name":["IMG_1704989588000.jpg"],"saveFile":"IMG_1704989588000.jpg"}}
我也是没有拉起photoPicker界面 你的这个警告,
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
api 是哪个版本? 手机系统版本?
感谢,我用真机就可以了。这样也太尴尬了。单纯保存张图片,还要打开这哪页面,繁琐的要死,
开发鸿蒙 没有真机寸步难行。预览器和模拟器很多bug,
我也是借来的真机。拓荒的路漫长啊 [笑死],
官方说的真机可以

官方说通过保存模式拉起photoPicker界面,但是完全没有响应
我有个小疑问哈
@ohos.file.picker 不是让你在手机上选择图片吗
那为什么还要保存到相册呢 不是本来就在手机里面吗
你说的是select选择图库图片的功能,我提问的是save保存的功能。比如说我生成一张图片,需要保存到手机上,
哦哦 抱歉 看错了,
在HarmonyOS鸿蒙Next中,使用@ohos.file.picker
的save
方法无法实现图片保存到相册功能,可能原因如下:
-
权限问题:确保应用已获取
ohos.permission.WRITE_MEDIA
权限,并在config.json
中正确声明。 -
URI问题:
save
方法需要正确的文件URI。确保URI指向有效的文件路径,且路径可写。 -
文件路径问题:鸿蒙系统的相册路径可能与其他系统不同,需确认文件保存路径是否为相册的标准路径。
-
API使用问题:
save
方法可能未正确调用或参数设置不当,需检查参数和调用方式是否符合API文档要求。 -
系统限制:鸿蒙Next可能存在某些系统限制,阻止文件直接保存到相册。
建议检查权限、URI、文件路径、API调用及系统限制,确保符合要求。
在HarmonyOS鸿蒙Next中,使用@ohos.file.picker
的save
方法保存图片到相册时,需确保以下几点:
- 权限申请:确保已申请并授予
ohos.permission.WRITE_MEDIA
权限。 - 文件路径:保存的文件路径应符合相册的存储规范,通常为
/storage/media/100/local/files/Pictures/
。 - MIME类型:保存时指定正确的MIME类型,如
image/jpeg
。 - 相册刷新:保存后调用
MediaScannerConnection
刷新相册,使图片立即显示。
若仍无法保存,请检查日志排查错误。