HarmonyOS 鸿蒙Next 使用沙盒保存网络图片资源(http://xxx)保存失败 沙盒查看不到图片
HarmonyOS 鸿蒙Next 使用沙盒保存网络图片资源(http://xxx)保存失败 沙盒查看不到图片
使用沙盒保存网络图片资源(http://xxx) 保存失败 沙盒查看不到图片
loadImageWithUrl(url: string, imgId:string) {
let OutData: http.HttpResponse
if (!url) {
return;
}
http.createHttp().request(url,
{
method:http.RequestMethod.GET,
connectTimeout:60000,
readTimeout:60000
}, async (error: BusinessError, data: http.HttpResponse) => {
if (error) {
console.error(`http reqeust failed with. Code: ${error.code}, message: ${error.message}`);
} else {
OutData = data
let code: http.ResponseCode | number = OutData.responseCode;
if (ResponseCode.ResponseCode.OK === code) {
let context = getContext(this) as common.UIAbilityContext;
let imageData: ArrayBuffer = OutData.result as ArrayBuffer;
let filePath = context.cacheDir + "/"+imgId+'-a.jpg';
let file = fs.openSync(filePath,fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
fs.writeSync(file.fd,imageData)
fs.closeSync(file);
}
}
})
}
更多关于HarmonyOS 鸿蒙Next 使用沙盒保存网络图片资源(http://xxx)保存失败 沙盒查看不到图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
保存文件到应用沙箱
//Page7.ets
import SaveImageUtil from './SaveImageUtil'
import common from '@ohos.app.ability.common';
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir
let fileName ='food.png'
@Entry
@Component
struct Page7 {
@State message: string = 'Hello World';
build() {
Column(){
Button('点击')
.onClick(()=>{
/**
* 保存文件到应用沙箱
* @param image 图片url或base64
* @param dirPath 保存文件夹路径
* @param fileName 保存文件名
*/
SaveImageUtil.saveImageToApplication('https://img2.baidu.com/it/u=4258186907,3858213948&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500',filesDir,fileName)
})
}
}
}
保存图片工具类
//SaveImageUtil.ets
/**
* 保存图片工具类
*/
import { BusinessError, request } from '@kit.BasicServicesKit'
import { common } from '@kit.AbilityKit'
import { buffer } from '@kit.ArkTS'
import { fileIo as fs } from '@kit.CoreFileKit'
class SaveImageUtil {
private context = getContext(this) as common.UIAbilityContext
/**
* 保存文件到应用沙箱
* @param image 图片url或base64
* @param dirPath 保存文件夹路径
* @param fileName 保存文件名
*/
async saveImageToApplication(image: string, dirPath: string, fileName: string): Promise<SaveImageResultVo> {
return new Promise(async (resolve: Function, reject: Function) => {
if (!fs.accessSync(dirPath)) {
fs.mkdirSync(dirPath)
}
if (image.startsWith('http')) {
// 如果是网络图片,则下载图片
try {
request
.downloadFile(this.context, { url: image, filePath: `${dirPath}/${fileName}` })
.then((downloadTask) => {
console.debug(`image => 保存图片到应用沙盒`)
downloadTask
.on('complete', () => {
// 图片下载完成
let vo = new SaveImageResultVo
vo.errorCode = 0
resolve(vo)
})
downloadTask
.on('fail', (err: number) => {
let vo = new SaveImageResultVo
vo.errorCode = err
resolve(vo)
})
})
.catch((error: BusinessError) => {
reject(error)
})
} catch (err) {
reject(err)
}
} else {
// base64图片
let content = image
if (image.startsWith('data:')) {
// 如果是data:,则截取,后的数据
content = image.split(',')[1]
}
try {
const decodeBuff = buffer.from(content, 'base64').buffer
this.writeBufferToFile(dirPath,fileName,decodeBuff)
let vo = new SaveImageResultVo
vo.errorCode = 0
resolve(vo)
} catch (err) {
reject(err)
}
}
})
}
writeBufferToFile(dirPath: string, fileName: string, buf: ArrayBuffer) {
if (!fs.accessSync(dirPath)) {
// 如果文件夹不存在,则先创建文件夹
fs.mkdirSync(dirPath)
}
let file = fs.openSync(`${dirPath}/${fileName}`, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
fs.writeSync(file.fd, buf)
fs.closeSync(file)
}
}
export class SaveImageResultVo {
errorCode: number = 0
}
export default new SaveImageUtil()
更多关于HarmonyOS 鸿蒙Next 使用沙盒保存网络图片资源(http://xxx)保存失败 沙盒查看不到图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,使用沙盒保存网络图片资源(如http://xxx
)时,若保存失败且沙盒中查看不到图片,可能是以下原因:
-
网络权限未配置:确保应用已正确配置网络访问权限,包括Internet访问权限。
-
URL格式错误:检查图片URL是否正确,且该URL能够正常访问。
-
沙盒路径问题:确认沙盒保存路径是否正确,以及应用是否有权限写入该路径。
-
图片下载失败:可能是网络问题或服务器问题导致图片下载失败。
-
文件写入异常:在写入文件时可能遇到磁盘空间不足、文件系统错误等异常情况。
-
沙盒清理:检查系统或应用是否对沙盒进行了清理,导致保存的图片被删除。
-
文件读写权限:确保应用有读写沙盒文件的权限。
针对上述问题,可以逐一排查并修正。检查代码中的网络请求、文件路径、权限配置等部分,确保无误。同时,可以使用日志输出关键信息,帮助定位问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html