HarmonyOS 鸿蒙Next网络图片无法加载展示
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网络图片无法加载展示的问题,可能的原因及解决方案如下:
- UserAgent问题:直接用Image()加载网络图片时,所用UserAgent为非标准浏览器UserAgent,如果服务器对UserAgent有过滤则不会响应直接加载图片的请求。此时,若对服务器有控制,可修改Web服务器配置,放松对UserAgent的要求。
- 防盗链设置:服务器可能设置了防盗链,阻止图片直接加载。此时,可尝试用@ohos.net.http接口下载图片URL后,转码为Base64再用Image()进行显示。
- 网络问题:检查设备是否连接到了互联网,以及项目是否有添加“ohos.permission.INTERNET”访问网络权限。此外,也可能是DNS解析问题,可尝试更换网络或诊断修复。
- 证书问题:如果错误信息提示SSL peer certificate或SSH remote key问题,可能是服务器证书不被信任。此时,需要确保服务器证书有效且被客户端信任。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。