把应用沙箱下的图片保存到图库

把应用沙箱下的图片保存到图库

HarmonyOS
2024-05-20 22:09:50
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

在应用沙箱中,应用无法直接获取公共路径,例如图库,所以想要把沙箱路径中的图片保存到图库,就需要先调用picker接口,保存一个空图片到图库路径,获取到这个空图片路径后,open这个空图片和要保存的图片,然后通过copyFile将应用内图片复制到图库中,即可完成保存,具体代码如下

使用的核心API

首先导入模块

import fs from '@ohos.file.fs'; 
import picker from '@ohos.file.picker'; 
import { BusinessError } from '@ohos.base';

核心代码解释

async ()=>{ 
            let uris:String = "" 
            try { 
              const photoSaveOptions = new picker.PhotoSaveOptions(); // 创建文件管理器保存选项实例 
              photoSaveOptions.newFileNames = ["PhotoViewPicker01.png"]; // 保存文件名(可选),方括号里的文件名自定义,每次不能重复,设备里已有这个文件的话,名字就需要改个不一样的,不然接口会报错 
              const photoViewPicker = new picker.PhotoViewPicker(); 
              try { 
                let photoSaveResult = await photoViewPicker.save(photoSaveOptions); 
                if (photoSaveResult != undefined) { 
                  uris = photoSaveResult[0]; 
                  console.info('photoViewPicker.save to file succeed and uris are:' + uris); 
                } 
              } catch (error) { 
                let err: BusinessError = error as BusinessError; 
                console.error(`[picker] Invoke photoViewPicker.save failed, code is ${err.code}, message is ${err.message}`); 
              } 
            } catch (error) { 
              let err: BusinessError = error as BusinessError; 
              console.info("[picker] photoViewPickerSave error = " + JSON.stringify(err)); 
            } 
            try{ 
              let path = getContext().filesDir+"/test.jpg" //需要保存的图片的路径 
  
              let file = fs.openSync(path) 
              let file2 = fs.openSync(uris+"",fs.OpenMode.READ_WRITE) 
              fs.copyFileSync(file.fd,file2.fd) 
              fs.closeSync(file) 
              fs.closeSync(file2) 
            }catch (error) { 
              let err: BusinessError = error as BusinessError; 
              console.error(`[picker] Invoke photoViewPicker.save failed, code is ${err.code}, message is ${err.message}`); 
            } 
          })
分享
微博
QQ
微信
回复
2024-05-22 15:59:01
相关问题
怎么视频保存到相册以及主机端?
2509浏览 • 1回复 待解决
获取网络图片保存到相册
360浏览 • 1回复 待解决
如何将像素点保存到图片文件
877浏览 • 1回复 待解决
应用内组件截图并保存到用户文件
124浏览 • 1回复 待解决
有谁知道如何将图片保存到相册
387浏览 • 1回复 待解决
Hi3861数据保存到flash
7683浏览 • 1回复 已解决
怎么下载网络上PDF保存到本地?
2256浏览 • 1回复 待解决
如何将视频保存到相册以及主机端
4005浏览 • 1回复 待解决
分布式如何读写图库图片或者视频?
3160浏览 • 1回复 待解决
Image组件如何读入沙箱图片
1100浏览 • 1回复 待解决