可以参考以下demo:import { fileIo } from '@kit.CoreFileKit'; import { BusinessError, request } from '@kit.BasicServicesKit'; @Entry @Component struct Page { @State message: string = 'Hello World'; build() { Column() { Image('xxx').onComplete(()=>{ console.debug(`image => 保存网络图片到应用沙盒`) const context = getContext(this); let dirPath = context.cacheDir let fileName = 'temp2.jpg' // let fileName = 'temp1.mp4' //防止沙箱重名导致下载失败 if (fileIo.accessSync(`${dirPath}/${fileName}`)) { fileIo.rmdirSync(`${dirPath}/${fileName}`) } try { request.downloadFile(context, { enableMetered: true, url: "xxx", filePath: `${dirPath}/${fileName}` }).then((downloadTask: request.DownloadTask) => { downloadTask.on('fail', (err: number) => { console.error(`Failed to download the task. Code: ${err}`); }); downloadTask.on('complete', async () => { console.log('下载完成') }) } ).catch((err: BusinessError) => { console.error(`Invoke downloadTask failed, code is ${err.code}, message is ${err.message}`); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`Invoke downloadFile failed, code is ${err.code}, message is ${err.message}`); } }) } } }
可以参考以下demo: