获取网络图片,httpRequest.request报错error code: 2300023?

获取网络图片,httpRequest.request报错error code: 2300023, msg: Failed writing received data to disk/application?

问题代码:

httpRequest(urlAddr: string) {
  let httpRequest = http.createHttp()
  // httpRequest.on(“headersReceive”, (header: Object) => {
  // console.info("header: " + JSON.stringify(header))
  // })
  httpRequest.request(//网络图片地址
    urlAddr,
    {“usingCache”:true,
      // “readTimeout”:60000,
      // “connectTimeout”:60000,
      // “usingProtocol”:http.HttpProtocol.HTTP2
    },
    (error, data) => {
      if (error) {
        console.log("error code: " + error.code + ", msg: " + error.message)
      } else {
        let code = data.responseCode
        if (ResponseCode.ResponseCode.OK == code) {
          let res: ArrayBuffer = data.result as ArrayBuffer
          //通过获取到的uri创建图片源实例。
          let imageSource = image.createImageSource(res)
          class tmp {
            height: number = 100
            width: number = 100
          }

          let si: tmp = new tmp()
          let options: Record<string, number | boolean | tmp> = {
            'alphaType': 0, // 透明度
            'editable': false, // 是否可编辑
            'pixelFormat': 3, // 像素格式
            'scaleMode': 1, // 缩略值
            'size': { height: 100, width: 100 }
          } // 创建图片大小
          //将图片数据解析为pixelmap,并设置option属性。
          imageSource.createPixelMap(options).then((pixelMap) => {
            // 将pixelmap通过状态变量image传递给Image组件,将图片信息加载出来。
            let item:PictureItem = new PictureItem(0, pixelMap)
            this.services.push(item)
          })
        } else {
          console.log("response code: " + code)
        }
      }
    }
  )
  // httpRequest.off("headersReceive")
  httpRequest.destroy()
}

参考2300023的原因,排查过了:错误码2300023表示向磁盘/应用程序写入接收数据失败,

阅读 485
1 个回答

可能原因有:

  1. 目标文件为只读文件,没有写入权限。
  2. 下载的文件大小超过5M。

排查过程:

  1. 网络图片是直接渲染在image里,不会向本地磁盘写文件,而且给APP的module.json5里添加读写权限“name”: “ohos.permission.WRITE\_MEDIA”,“name”: “ohos.permission.READ\_NEDIA”,会报错error code: 201, msg: Permission denied。
  2. 下载的图片大小只有几百KB,最大的也不会到1M。
  3. 这个代码,我是参考官网实现的,春节前还是正常的,没动它,春节后再次使用DevEco Studio在Mate 40pro的单框架鸿蒙系统上运行就报错2300023了,重烧系统后依然报该错误。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进