HarmonyOS 保存文件时,如果才能避免将文件管理拉起来

保存文件时,如果才能避免将文件管理拉起来,比如其他系统保存在Documents文件夹下某个目录,麻烦给出具体代码示例

HarmonyOS
2024-12-23 15:01:24
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

请设置下DocumentPickerMode模式为下载模式。

保存在文件管理器中需要用户授权,如果不希望拉起文件管理可以将DocumentPickerMode配置为下载模式。参考

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-picker-V5#documentsaveoptions

保存参考

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-picker-V5#save-3

请参考下面,不拉起文管保存文件

import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { fileIo, fileUri as fileuri } from '@kit.CoreFileKit';
import fs from '@ohos.file.fs';
import { BusinessError } from '@ohos.base';


@Entry
@Component
struct testFilePickerPage {

  build() {
    Row() {
      Column() {
        Image($r('app.media.startIcon')) // 要保存的图片
          .height(280)
          .width(280)
          .padding(40)

        Button('保存图片到指定目录')
          .fontSize(12)
          .onClick(async () => {
            let uri = 'file://docs/storage/Users/currentUser' + '/outputImg123'; // 图片存储路径
            let fileUri: fileuri.FileUri = new fileuri.FileUri(uri);
            let path = fileUri.path;
            fs.mkdir(path);

            getContext().resourceManager.getMediaContent($r('app.media.startIcon').id, 120, (error: BusinessError, value: Uint8Array) => {
              if (error != null) {
                console.error(`callback getMediaContent failed, error code: ${error.code}, message: ${error.message}.`);
              } else {

                let mediaBuffer = value.buffer;
                path = path + '/11111.png';
                let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
                let writeLen = fs.writeSync(file.fd, mediaBuffer);
                console.info("write data to file succeed and size is:" + writeLen);
                fs.closeSync(file);
                console.info('DocumentViewPicker.save successfully, DocumentSaveResult uri: ');

              }

            });

          }).margin({ left: 15 })

        Text().width(20)
        SaveButton()
          .onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
            if (result === SaveButtonOnClickResult.SUCCESS) {
              try {
                const context = getContext(this);
                let helper = photoAccessHelper.getPhotoAccessHelper(context);
                // onClick触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。
                let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg');
                // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制
                let file = await fileIo.open(uri, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
                try {
                  context.resourceManager.getMediaContent($r('app.media.startIcon').id, 0)
                    .then(async value => {
                      let media = value.buffer;
                      // 写到媒体库文件中
                      await fileIo.write(file.fd, media);
                      await fileIo.close(file.fd);
                      AlertDialog.show({ message: '已保存至相册!' });
                    });
                } catch (err) {
                  console.error('error is ' + JSON.stringify(err))
                }
              } catch (error) {
                console.error('error is ' + JSON.stringify(error));
              }
            } else {
              AlertDialog.show({ message: '设置权限失败' })
            }
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
2024-12-23 19:30:48
相关问题
如何Pixmap保存到本地文件
588浏览 • 1回复 待解决
如何像素点保存到图片文件
2406浏览 • 1回复 待解决
HarmonyOS PDF文件保存
274浏览 • 1回复 待解决
单元测试文件如何能运行起来
2488浏览 • 1回复 待解决
HarmonyOS 保存图片文件异常
439浏览 • 1回复 待解决
HarmonyOS 文件下载保存问题
370浏览 • 1回复 待解决
HarmonyOS 文件转成流
119浏览 • 1回复 待解决
通过saveDocument()接口保存文件
528浏览 • 1回复 待解决
HarmonyOS 文件管理查找pdf文件并上传
179浏览 • 1回复 待解决
如果让分割线垂直起来
6039浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人