HarmonyOS 鸿蒙Next网络图片无法加载展示

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next网络图片无法加载展示

云信网络图片url无法正常加载,地址是https://nim.nosdn.127.net/MjYzMjI2NDU%3D%2FbmltYV8yNDY5NDI0Njc1NDBfMTcyMTcyNDYzMjE2NV82ZGMyNmNlMC02MjE5LTQ0NWEtODZmMy0wNzI1ZTFjNjNmYjc%3D  在浏览器上正常展示的  我问了他们技术支持 他们是这么回复的 见截图

2 回复

您提供的这种在线地址建议使用web组件进行图片加载,iamge组件可以加载出有具体图片后缀名的网络图片。可参考如下代码:


import web_webview from '@ohos.web.webview'

@Entry

@Component

struct Index {

  @State message: string = 'Hello World';

  controller: web_webview.WebviewController = new web_webview.WebviewController()

  build() {

    Column() {

      Image('https://ww2.sinaimg.cn/mw690/0070NSSfgy1hr8y0ymcewj30r40qogr8.jpg')

        .width('100%').height('50%')

      Divider().strokeWidth(5)

      Web({ src: 'https://nim.nosdn.127.net/MjYzMjI2NDU%3D%2FbmltYV8yNDY5NDI0Njc1NDBfMTcyMTcyNDYzMjE2NV82ZGMyNmNlMC02MjE5LTQ0NWEtODZmMy0wNzI1ZTFjNjNmYjc%3D', controller: this.controller })

        .width('100%')

        .height('50%')

    }.width('100%').height('100%').justifyContent(FlexAlign.Center)

  }

}

,您可以将图片保存到沙箱然后使用image组件来加载沙箱中的图片,若您遇到问题可以提供demo过来,我们为您分析、处理。

我们这边使用您提供的demo可以正常加载出图片。

,能否提供下咱们的ide和真机的当前版本信息,我们这边核对下。

,经过内部分析:咱们可以直接使用image组件来显示picker返回的uri。 在22222.zip的代码中,将Index.ets中的39行注释放开,40、41、42行注释掉,可成功展示图片。

经排查保存图片到沙箱的方法写的不太对,可以使用以下代码


private async getRealPath(url: string) {

const catchDir = getContext(this).getApplicationContext().cacheDir

let fileDir = catchDir + '/nim'

if (!fs.accessSync(fileDir)) {

fs.mkdirSync(fileDir)

}

let uriFile = fs.openSync(url, fs.OpenMode.READ_ONLY)

const filePath = fileDir + `/${Date.now()}.png`

let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE)

fs.copyFileSync(uriFile.fd, file.fd)

fs.closeSync(file);

fs.closeSync(uriFile);

let result: string = ""

try {

result = fileUri.getUriFromPath(filePath)

console.log(`### =========== result:${result}`)

} catch (e) {

console.log(`### =========== error:${e}`)

}

return result

}

,咱们设置成

“deviceTypes”: [

“phone”

],后可以重新clean,再rebuild下,看是否存在问题。

也可以重新链接下测试机

针对HarmonyOS 鸿蒙Next网络图片无法加载展示的问题,可能的原因及解决方案如下:

  1. UserAgent问题:直接用Image()加载网络图片时,所用UserAgent为非标准浏览器UserAgent,如果服务器对UserAgent有过滤则不会响应直接加载图片的请求。此时,若对服务器有控制,可修改Web服务器配置,放松对UserAgent的要求。
  2. 防盗链设置:服务器可能设置了防盗链,阻止图片直接加载。此时,可尝试用@ohos.net.http接口下载图片URL后,转码为Base64再用Image()进行显示。
  3. 网络问题:检查设备是否连接到了互联网,以及项目是否有添加“ohos.permission.INTERNET”访问网络权限。此外,也可能是DNS解析问题,可尝试更换网络或诊断修复。
  4. 证书问题:如果错误信息提示SSL peer certificate或SSH remote key问题,可能是服务器证书不被信任。此时,需要确保服务器证书有效且被客户端信任。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部