HarmonyOS如何将一个下载的pdf文件存入手机,并且让用户从手机自带的文件管理应用中查找到

HarmonyOS如何将一个下载的pdf文件存入手机,并且让用户从手机自带的文件管理应用中查找到。

HarmonyOS
2024-09-09 10:34:07
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

文件操作相关可参考:

// 拷贝文件,从沙箱拷贝到公共目录 
export function copyFileToCommon(src: string, dst: string) { 
  try { 
    let file = fs.openSync(src, fs.OpenMode.READ_ONLY); 
    let file2 = fs.openSync(dst, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); //先创建有读写权限的文件,再把不可读写的文件复制过来 
    fs.copyFileSync(file.fd, file2.fd); 
  } catch (e) { 
    console.error("copy error") 
  } 
} 
// 下载文件到沙箱目录 
export function downloadFile(ctx: Context, fsUri: string, localPath: string) { 
  try { 
    request.downloadFile(ctx, { 
      url: fsUri, 
      filePath: localPath // 沙箱路径 
    }).then((downloadTask: request.DownloadTask) => { 
      downloadTask.on('complete', () => { 
        console.info("download complete"); 
      }) 
    }).catch((err: BusinessError) => { 
      console.error("invoke download task failed") 
    }) 
  } catch (err) { 
    let e = err as BusinessError; 
    console.error("invoke download file failed, message=" + e.message) 
  } 
} 
export function saveFromDPicker(localPath: string) { 
  const documentSaveOptions = new picker.DocumentSaveOptions(); // 创建文件管理器选项实例 
  const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例 
  documentViewPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => { 
    let uri = documentSaveResult[0]; 
    console.info('documentViewPicker.save to file succeed and uris are:' + uri); 
    copyFileToCommon(localPath, uri); 
  }).catch((err: BusinessError) => { 
    console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`); 
  }) 
} 
// UI 
import { downloadFile, saveFromDPicker } from '../common/Utils'; 
import { picker } from '@kit.CoreFileKit'; 
@Entry 
@Component 
struct Index { 
  @State message: string = 'Hello World'; 
  @State uri:string = ''; 
  build() { 
    Column() { 
      Button('下载文件') 
        .onClick(() => { 
          downloadFile(getContext(this), "https://example/test.pdf", getContext(this).cacheDir + "/test.pdf"); 
        }) 
      Button('保存文件至管理器') 
        .onClick(() => { 
          saveFromDPicker(getContext(this).cacheDir + "/test.pdf"); 
        }) 
    }.width("100%").height("100%") 
  } 
}

可通过saveFromDPicker 中添加documentSaveOptions.newFileNames = [“test.pdf”]实现。

请看文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/save-user-file-0000001774120434#ZH-CN_TOPIC_0000001811157406__保存文档类文件

分享
微博
QQ
微信
回复
2024-09-09 16:03:44
相关问题
HarmonyOS怎么手机一个文件出来?
461浏览 • 1回复 待解决
实现一个模拟文件下载过程
362浏览 • 1回复 待解决
HarmonyOS hdc如何复制文本传入手机
482浏览 • 1回复 待解决
如何将docker容器文件复制到主机?
2452浏览 • 1回复 待解决
如何将多工程hap打包成一个app
1262浏览 • 1回复 待解决