HarmonyOS 下载文件到内部存储报错:401

saveFile(fileUrl: string, fileName: string, callback: string) {
    Logger.error(`StorageBridge => saveFile(${fileUrl},${fileName},${callback})`)
    const fileTempPath = this.context.filesDir + '/' + fileName
    Logger.debug(`StorageBridge => saveFile fileTempPath is : ${fileTempPath}`)

    const options = new picker.DocumentSaveOptions()
    options.newFileNames = [fileName]

    const documentPicker = new picker.DocumentViewPicker()
    documentPicker
      .save(options)
      .then(async (result) => {
        Logger.debug(`StorageBridge => saveFile DocumentViewPicker result is : ${result}`)
        request
          .downloadFile(this.context, { url: fileUrl, filePath: result[0] })
          .then((downloadTask) => {
            downloadTask.on('complete', () => {
              Logger.debug(`StorageBridge => 文件下载成功`);
            })

            downloadTask.on('fail', (err: number) => {
              Logger.error(`StorageBridge => 文件下载失败:${err}`);
            })
          })
          .catch((err: BusinessError) => {
            Logger.error(`StorageBridge => 文件下载异常:${JSON.stringify(err)}`);
          })
      })
      .catch((err: BusinessError) => {
        Logger.error(`StorageBridge => saveFile DocumentViewPicker save异常:${JSON.stringify(err)}`);
      })
  }

是不允许直接下载到内部存储吗?

HarmonyOS
5天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

文件管理所展示目录仅能通过picker保存文件进去,参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/save-user-file-V5

//如下代码可以保存一个空图片到文件管理器,获取空文件路径之后把应用沙箱里的图片复制到空文件

async function func(){
  let uris:String = ""
  try {
    const DocumentSaveOptions = new picker.DocumentSaveOptions(); // 创建文件管理器保存选项实例

    DocumentSaveOptions.newFileNames = ["DocumentSaveOptions01.txt"]; // 保存文件名(可选),方括号里的文件名自定义,每次不能重复,设备里已有这个文件的话,名字就需要改个不一样的,不然接口会报错
    const DocumentViewPicker = new picker.DocumentViewPicker();
    try {
      let DocumentSaveResult = await DocumentViewPicker.save(DocumentSaveOptions);
      if (DocumentSaveResult != undefined) {
        uris = DocumentSaveResult[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+"/index.html" //需要保存的图片的路径

    let file = fs.openSync(path,fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
    let bytes=GlobalThis.context?.resourceManager.getRawFileContentSync('index.html');
    fs.writeSync(file.fd,bytes?.buffer);
    console.info("photoViewPickerSave uris = " + uris);
    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
微信
回复
5天前
相关问题
HarmonyOS下载文件报错
562浏览 • 1回复 待解决
HarmonyOS 下载文件指定文件
62浏览 • 1回复 待解决
HarmonyOS 如何下载文件本地
76浏览 • 1回复 待解决
HarmonyOS http请求下载文件报错2300023
177浏览 • 1回复 待解决
http请求中下载文件报错2300023
2632浏览 • 1回复 待解决
HarmonyOS下载文件失败返回
568浏览 • 1回复 待解决
如何查看HarmonyOS下载文件
399浏览 • 1回复 待解决
HarmonyOS 使用http下载文件异常
77浏览 • 1回复 待解决
HarmonyOS 如何监听下载文件的进度
192浏览 • 1回复 待解决
使用request下载文件的方式
868浏览 • 1回复 待解决
如何使用接口下载文件
2161浏览 • 1回复 待解决
是否支持iframe下载文件
866浏览 • 1回复 待解决
request下载文件不能覆盖现有文件
1875浏览 • 1回复 待解决
HarmonyOS 下载文件并保存到指定目录
166浏览 • 1回复 待解决
下载文件打印乱码如何修改
418浏览 • 1回复 待解决
HarmonyOS web下载文件点击无反应
157浏览 • 1回复 待解决