【快应用】网络图片保存到相册失败案例
2023-09-11 14:20:23 时间
问题背景:
调用 media.saveToPhotosAlbum接口保存网络路径的图片。出现错误提示 code=202,该如何处理?
代码如下:
<script>
import prompt from '@system.prompt';
import media from '@system.media';
module.exports = {
data: {
componentData: {},
imgurl: "https://ywopen-1252317822.image.myqcloud.com/openwx/recommendimg/20210908/6138797a4e3b3.jpg"
},
save() {
media.saveToPhotosAlbum({
uri: this.imgurl,
success: function () {
console.log('save success');
},
fail: function (data, code) {
console.log('handling fail, code = ' + code);
}
})
}
}
</script>
报错提示如下:
09-16 14:12:01.511 E/jsLog (19071): saveToPhotosAlbum: input err: invalid param.
09-16 14:12:01.519 I/jsLog (19071): handling fail, code = 202
问题分析:
快应用在中的saveToPhotosAlbum接口目前仅支持本地图片路径保存到相册,暂不支持网络图片路径导致的。
解决方法:
想要保存网络路径的图片需要先调用request.download接口将图片先下载下来,拿到本地存储的临时图片路径,再去调接口将图片保存到相册。
修改代码如下:
<script>
import prompt from '@system.prompt';
import request from '@system.request';
import media from '@system.media';
module.exports = {
data: {
componentData: {},
imgurl: "https://ywopen-1252317822.image.myqcloud.com/openwx/recommendimg/20210908/6138797a4e3b3.jpg",
downloadtoken: '',
downloadurl: ''
},
save() {
media.saveToPhotosAlbum({
uri: this.downloadurl,
success: function () {
console.log('save success');
prompt.showToast({
message: 'save success',
})
},
fail: function (data, code) {
prompt.showToast({
message: 'handling fail, code = ' + code,
})
console.log('handling fail, code = ' + code);
}
})
},
download() {
var that = this
request.download({
"url": this.imgurl,
success: function (data) {
console.log(data.token);
that.downloadtoken = data.token
},
fail: function (data, code) {
console.log("handling fail, code = " + code);
},
complete() {
that.ondownloadcomplete()
}
})
},
ondownloadcomplete() {
var that = this
request.onDownloadComplete({
"token": this.downloadtoken,
success: function (data) {
console.log(data.uri);
that.downloadurl = data.uri
},
fail: function (data, code) {
console.log("handling fail, code = " + code);
}
})
}
}
</script>
效果如下:
09-16 14:28:03.468 I/jsLog (19152): 341
09-16 14:28:03.843 I/jsLog (19152): internal://mass/Download/6138797a4e3b3-2.jpg
09-16 14:28:05.479 I/jsLog (19152): save success
09-16 14:29:04.878 I/jsLog (19152): save success
Hello.ux页面代码如下:
<template>
<!-- Only one root node is allowed in template. -->
<div class="container">
<text class="txt" onclick="download">download</text>
<text class="txt" onclick="save">savetoPhotosAlbum</text>
</div>
</template>
<style>
.container {
flex-direction: column;
align-items: center;
justify-content: center;
}
.txt {
font-size: 30px;
text-align: center;
width: 50%;
height: 70px;
margin-top: 5px;
border: 1px solid #000000;
}
</style>
<script>
import prompt from '@system.prompt';
import request from '@system.request';
import media from '@system.media';
module.exports = {
data: {
componentData: {},
imgurl: "https://ywopen-1252317822.image.myqcloud.com/openwx/recommendimg/20210908/6138797a4e3b3.jpg",
downloadtoken: '',
downloadurl: ''
},
save() {
media.saveToPhotosAlbum({
uri: this.downloadurl,
success: function () {
console.log('save success');
prompt.showToast({
message: 'save success',
})
},
fail: function (data, code) {
prompt.showToast({
message: 'handling fail, code = ' + code,
})
console.log('handling fail, code = ' + code);
}
})
},
download() {
var that = this
request.download({
"url": this.imgurl,
success: function (data) {
console.log(data.token);
that.downloadtoken = data.token
},
fail: function (data, code) {
console.log("handling fail, code = " + code);
},
complete() {
that.ondownloadcomplete()
}
})
},
ondownloadcomplete() {
var that = this
request.onDownloadComplete({
"token": this.downloadtoken,
success: function (data) {
console.log(data.uri);
that.downloadurl = data.uri
},
fail: function (data, code) {
console.log("handling fail, code = " + code);
}
})
}
}
</script>
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
相关文章
- [转] 透过现象看本质: 常见的前端架构风格和案例
- Google Earth Engine APPS(GEE)——使用 AREA2 和 CODED 估算森林砍伐和退化面积巴西森林砍伐案例总览
- 【MATLAB教程案例92】基于parfor的matlab并行运行机制
- 【MATLAB教程案例32】基于matlab的交通标志检测分割算法的仿真——形态学处理,膨胀,腐蚀,形状检测,颜色模型,小波滤波等知识的综合应用
- 【MATLAB教程案例12】基于GA遗传优化算法的函数极值计算matlab仿真及其他应用
- 华清远见STM32MP157开发板FS-MP1A资料更新情况(linux+Qt+项目案例)
- 图解css3:核心技术与案例实战. 2.10 伪元素
- IT众包Web网站服务案例:江苏保税店
- Kubernetes中分布式存储Rook-Ceph的使用:一个ASP.NET Core MVC的案例
- 使用Angular 4、Bootstrap 4、TypeScript和ASP.NET Core开发的Apworks框架案例应用:Task List
- 数据分析案例:基于水色图像的水质识别
- stm32f103中freertos的tasks基本使用案例及备忘
- 【快应用】搭建数据交换的桥梁--不同快应用的数据共享案例
- 【快应用】原生广告下载状态监听案例
- 【AppLinking实战案例】通过AppLinking分享应用内图片
- 《Android 应用案例开发大全(第二版)》——1.5节第一个Android程序——Hello Android
- 《Android 应用案例开发大全(第二版)》——2.2节壁纸策划及准备工作
- 《Android 应用案例开发大全(第二版)》——2.7节线程相关类
- 《Android 应用案例开发大全(第二版)》——6.4节跨应用程序访问窗口
- 《Android 应用案例开发大全(第3版)》——第2章,第2.2节壁纸的策划及准备工作
- 《Android 应用案例开发大全(第3版)》——导读
- 《区块链开发指南》一一1.5 合约应用案例
- 7月17日云栖精选夜读:深度 | 两个案例,掌握AI在大数据领域的前沿应用
- 【快应用】align-self属性设置不生效案例
- PgSQL · 应用案例 · 阿里云RDS金融数据库(三节点版) - 背景篇
- 超融合基础设施主流应用案例