帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
1
帖子
0
勋章
23
Y币

[插件开发] 急求答案 如何存储图片和文件

[复制链接]
发表于 2022-5-28 11:53:49
网站导入到api 以open win的打开后,需要添加哪些详细代码,以便存取网站里的图片和文件? 谢谢!
380
帖子
4
勋章
6
Y币
网站代码你有权限修改吗? 没有的话做不到。

如果可以修改,可以添加一个按钮,点击时调用api.download 下载图片或文件。
1
帖子
0
勋章
23
Y币
有权限修改的。
技术支持-F · 2022-5-28 12:34网站代码你有权限修改吗? 没有的话做不到。

如果可以修改,可以添加一个按钮,点击时调用api.download 下载图片或文件。
1
帖子
0
勋章
23
Y币
有权限的。
BIP645309 · 2022-5-28 12:47有权限修改的。
1
帖子
0
勋章
23
Y币
有权限的。
BIP645309 · 2022-5-28 12:47有权限修改的。
1
帖子
0
勋章
23
Y币
有权限修改的。另外貌似也用不到
BIP645309 · 2022-5-28 12:47有权限修改的。
1
帖子
0
勋章
23
Y币
有权限修改的。另外貌似也用不到
技术支持-F · 2022-5-28 12:34网站代码你有权限修改吗? 没有的话做不到。

如果可以修改,可以添加一个按钮,点击时调用api.download 下载图片或文件。
1
帖子
0
勋章
23
Y币
从框架上直接做不更好吗?我看有人实现过
技术支持-F · 2022-5-28 12:34网站代码你有权限修改吗? 没有的话做不到。

如果可以修改,可以添加一个按钮,点击时调用api.download 下载图片或文件。
380
帖子
4
勋章
6
Y币
那不清楚怎么做的,没想到方法。
BIP645309 · 2022-5-28 12:52从框架上直接做不更好吗?我看有人实现过
130
帖子
7
勋章
5万+
Y币
  1. // apicloud 控制台需要添加webBrowser模块,重新编译loader
  2. var jsfunc = "";//注入脚本代码
  3. var webUrl = "https://www**.**/";//网站地址
  4. apiready = function () {
  5.        
  6.         getReloadData();
  7.        
  8. }

  9. function getReloadData(){
  10.        
  11.         api.addEventListener({
  12.                 name: 'commonEventListener'
  13.         }, function(ret, err) {
  14.                 var result = ret.value;
  15.                 if(result.eventType == "downloadImage"){
  16.                         //获取图片信息
  17.                         var imageUrl = result.imageUrl;
  18.                         downloadImage(imageUrl);
  19.                 }
  20.         });

  21.         //webBrowser 打开链接地址
  22.         openPageView();
  23. }

  24. function openPageView(){
  25.         var webBrowser = api.require('webBrowser');
  26.                 //打开网站地址
  27.                 webBrowser.openView({
  28.                         url: webUrl,
  29.                         rect: {
  30.                                 x: 0,
  31.                                 y: api.safeArea.top,
  32.                                 w: 'auto',
  33.                                 h: 'auto'
  34.                         }
  35.                 }, function(ret, err) {
  36.                            
  37.                         switch (ret.state) {
  38.                           case 0:

  39.                                 break;
  40.                           case 1:
  41.                                 //页面加载完成
  42.                                 if(ret.progress == 100 ){
  43.                                         //1.判断网站地址是否需要js注入 ret.url
  44.                                        
  45.                                         //2.js 注入
  46.                                   webBrowser.loadScript({
  47.                                           script: jsfunc
  48.                                   });
  49.                                 }
  50.                                 break;
  51.                           case 2:
  52.                                
  53.                                 break;
  54.                           case 3:
  55.                                 break;
  56.                           case 4:

  57.                                 break;
  58.                           default:
  59.                                 break;
  60.                         }
  61.                 });
  62.                

  63. }
  64. //图片缓存到本地
  65. function cacheImage(imagepath,filepath,filename,callback,isShowLoading){
  66.   if(!arguments[0]) return;
  67.   if(!arguments[1]) filepath = "cacheImage";
  68.   if(!arguments[2]) filename =  new Date().getTime();
  69.   if(!arguments[4]) isShowLoading = false;
  70.   var savePath = 'fs://'+filepath+'/original/'+filename+'.jpeg';
  71.   if(isShowLoading){
  72.     api.showProgress();
  73.   }
  74.   api.download({
  75.     url: imagepath,
  76.     savePath: savePath,
  77.     report: true,
  78.     cache: true,
  79.     allowResume: true
  80.   }, function (ret, err) {
  81.     if(ret.state === 1){
  82.                 if(isShowLoading){
  83.                         api.hideProgress();
  84.                 }
  85.           
  86.             var data = {
  87.                   state:1,
  88.                   savePath:savePath,
  89.                 };
  90.                 callback(data);
  91.     }else if(ret.state === 2){
  92.       if(isShowLoading){
  93.         api.hideProgress();
  94.       }
  95.     }
  96.   });
  97. }


  98. //图片保存到系统本地相册
  99. function downloadImage(imagepath,filepath,filename){
  100.   if(!arguments[0]) return;
  101.   if(!arguments[1]) filepath = "cacheImage";
  102.   if(!arguments[2]) filename =  new Date().getTime();
  103.   cacheImage(imagepath,filepath,filename,function (ret,err) {
  104.       if(ret.state === 1){
  105.         requestPermission(['camera'],function(ret,err){
  106.           if(ret){
  107.             api.saveMediaToAlbum({
  108.               path: ret.savePath,
  109.               groupName:api.appName
  110.             }, function (ret, err) {
  111.               if(ret.status){
  112.                 showMessage("图片已保存至本地相册");
  113.               }else{
  114.                 showMessage("图片保存失败");
  115.               }
  116.             });
  117.           }
  118.         });
  119.       }
  120.   });
  121. }

  122. function requestPermission(vList,callback){

  123.   if(!arguments[0]) vList = [];
  124.   if(vList.length <= 0){
  125.     callback(true);
  126.     return;
  127.   }
  128.   var resultList = api.hasPermission({
  129.       list : vList
  130.   });
  131.   var reqPermissionList = [];
  132.   var reqPermissionListCName = [];
  133.   for (var i = 0; i < resultList.length; i++) {
  134.     if(resultList[i].granted == false){
  135.       var permissionName = resultList[i].name;
  136.       reqPermissionList.push(permissionName);

  137.       if(permissionName.indexOf('notification') > -1 ){
  138.         //判断是否为通知权限
  139.         reqPermissionListCName.push("【通知】");
  140.       }else if(permissionName.indexOf('location') > -1){
  141.         //判断是否为定位权限
  142.         reqPermissionListCName.push("【定位】");
  143.       }
  144.     }
  145.   }

  146.   if(reqPermissionList.length > 0){
  147.     if(reqPermissionListCName.length > 0){

  148.       api.confirm({
  149.         title: api.appName,
  150.         msg: '便于更好的体验《'+api.appName+'》,允许请求手机'+reqPermissionListCName.join("/")+'权限?',
  151.         buttons: ['确定', '取消']
  152.       }, function(ret, err) {
  153.           var index = ret.buttonIndex;
  154.           if(index != 1){
  155.             callback(false);
  156.           }else{
  157.             requestPermissionResult(reqPermissionList,callback);
  158.           }
  159.       });
  160.     }else{
  161.       requestPermissionResult(reqPermissionList,callback);
  162.     }
  163.   }else{
  164.     callback(true);
  165.   }
  166. }

  167. function requestPermissionResult(reqPermissionList,callback){
  168.   var iscallback = true;
  169.   api.requestPermission({
  170.     list:reqPermissionList,
  171.     code:10001
  172.   }, function(ret, err){
  173.       console.log(JSON.stringify(ret));
  174.       if(ret){
  175.         var callList = ret.list;
  176.         for (var i = 0; i < callList.length; i++) {
  177.           if(!callList[i].granted){
  178.             iscallback = false;
  179.             continue;
  180.           }
  181.         }
  182.         callback(iscallback);
  183.       }else{
  184.         callback(false);
  185.       }
  186.   });
  187. }
复制代码


jsfunc :根据自己的需求整理下面的代码

  1. // 例如:点击事件
  2.         // 选择器
  3.         var cimageBtn = document.getElementById("cimage-btn");
  4.                 cimageBtn.addEventListener("click", function (){
  5.                        
  6.                         //要保存到相册的图片(自行获取)
  7.                         var imageUrl = document.getElementById("cimage").src;
  8.                         // var imageUrl = 'https://b**.**/searchbox/image/cmsuploader/20220520/1653038842439141.png';
  9.                         api.sendEvent({
  10.                                 name: 'commonEventListener',
  11.                                 extra: {
  12.                                         eventType: 'downloadImage',
  13.                                         imageUrl: imageUrl//远程图片地址
  14.                                 }
  15.                         });
  16.                 });
复制代码


将整理好的代码 压缩一行,放在jsfunc 里面即可(无用注释可去掉)


BIP645309 · 2022-5-28 12:52从框架上直接做不更好吗?我看有人实现过
12下一页
您需要登录后才可以回帖 登录

本版积分规则