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

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

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';
  • 1.
  • 2.
  • 3.

核心代码解释

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}`); 
            } 
          })
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
分享
微博
QQ
微信
回复
2024-05-22 15:59:01


相关问题
HarmonyOS PhotoViewPicker 保存到图库
1437浏览 • 1回复 待解决
HarmonyOS如何图片保存到手机相册
1249浏览 • 1回复 待解决
如何图片和文案结合,保存到相册
918浏览 • 0回复 待解决
HarmonyOS Resource文件如何保存到沙箱
586浏览 • 1回复 待解决
HarmonyOS 图片保存到相册
408浏览 • 1回复 待解决
怎么视频保存到相册以及主机端?
4594浏览 • 1回复 待解决
HarmonyOS 图片保存到相册报错
695浏览 • 1回复 待解决
HarmonyOS 保存网络图片图库更新
732浏览 • 1回复 待解决