起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2717|回复: 8

[处理中3] file-transfer实现图片下载、打开的功能IOS不兼容。

[复制链接]

6

主题

22

帖子

54

积分

初级会员

Rank: 2

积分
54
QQ
发表于 2018-2-8 15:27:30 | 显示全部楼层 |阅读模式
本帖最后由 周周泽龙 于 2018-2-8 15:30 编辑

var timestamp = Date.parse(new Date());
                filePath = 'file:///storage/emulated/0/XMS_Img/XMS_IMG'+timestamp+'.png'; //下载存放路径,数据库保存文件名
        var url = imgURL; //图片下载地址
        //var url = imgURL//"http://pic.ehouze.com/uploadfiles/129/K1/201802/00056/征信报告/129-K120180200056pic001.jpg"; //apk下载地址
                var fileTransfer = new FileTransfer(); //创建文件传输对象
                fileTransfer.onprogress = function(progressEvent) { //文件传输插件对象的进度方法调用
                var percentProgress = parseInt((progressEvent.loaded / progressEvent.total) * 100)+ "%"; //获取已下载和总大小的百分比
                if (progressEvent.lengthComputable)//获取浏览器返回HEAD信息包含CONTENT-LENGTH为TRUE 则执行下面
                {        
                    //$(".jindutiao span").css("width",percentProgress); //设置进度条的样式
                    //$(".jindutiao p").html(percentProgress);        //设置进度条里面的数字
                }
        };
        fileTransfer.download( //调用对象的下载方法,开始下载
            url,
            filePath,
            function(entry) {
                hint("文件已下载到XMS_Img目录下");//下载完成后调用方法
                //这里下载完成后,将进度条隐藏或者写其他需要的代码
                openFile();//下载完成进入安装页面
            }.bind(this),
            function(error) {  //出错回调函数
                hint("download error source " + error.source);
                hint("download error target " + error.target);
                hint("upload error code " + error.code);
            },
            false,
            {
                headers: {
                    "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
                }
            }
        ); var openFile = function(event){
            var localUrl = filePath;//下载文件本地保存路径         
            var open = cordova.plugins.disusered.open;
            function success() {

            }
            function error(code) {
                    if (code === 1) {
                            hint('文件未在本地保存,请点击下载!');
                    } else {
                           hint('未知错误,请联系管理员!');
                    }
            }
            open(localUrl, success, error);
    };

使用这些代码可以再安卓实现图片的下载和查看,但是IOS却不兼容这个方法,点击完全没有反应。之后更换了file的文件系统来处理但是这个方法不管是安卓还是IOS都不会生成文件夹,也不会添加文件查看文件。
var timestamp = Date.parse(new Date());
                fileName = 'XMSImg'+timestamp+'.png'; //下载存放路径,数据库保存文件名
                var url = imgURL; //图片下载地址
                //下载图片
                window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
                window.requestFileSystem(window.TEMPORARY, 5*1024*1024, initFS, errorHandler);
                function initFS(fs){
                        hint("Welcome to Filesystem! It's showtime "); // Just to check if everything is OK
                        function createDir(rootDir, folders) {
                          rootDir.getDirectory(folders[0], {create: true}, function(dirEntry) {
                            if (folders.length) {
                              createDir(dirEntry, folders.slice(1));
                              fs.root.getDirectory('Documents', {}, function(dirEntry){
                                          var dirReader = dirEntry.createReader();
                                          dirReader.readEntries(function(entries) {
                                            for(var i = 0; i < entries.length; i++) {
                                              var entry = entries;
                                              if (entry.isDirectory){
                                                hint('Directory: ' + entry.fullPath);
                                              }
                                              else if (entry.isFile){
                                                      hint('File: ' + entry.fullPath);
                                              }
                                            }
                                       
                                          }, errorHandler);
                                                fs.root.getFile(fileName, {create: true}, function(fileEntry) {
                                                        var imgData = url;
                                                        fileEntry.createWriter(function(fileWriter) {
                                                                var url = new Blob([imgData],{type:"image/png"})
                                                            fileWriter.write(url);
                                                            fileEntry.file(function(file) {
                                                                    var reader = new FileReader();
                                                                    reader.onloadend = function(e) {
                                                                      console.info(file);
                                                                    };
                                                                    reader.readAsText(file);
                                                                  }, errorHandler);
                                                        }, errorHandler);
                                                }, errorHandler);
                                        }, errorHandler);
                            }
                          }, errorHandler);
                        };
                        createDir(fs.root, 'Documents'.split('/'));
                        // place the functions you will learn bellow here
                }
                function errorHandler(err){
                        var msg = 'An error occured: ';

                        switch (err.code) {
                        case FileError.NOT_FOUND_ERR:
                                msg += 'File or directory not found';
                                break;

                        case FileError.NOT_READABLE_ERR:
                                msg += 'File or directory not readable';
                                break;

                        case FileError.PATH_EXISTS_ERR:
                                msg += 'File or directory already exists';
                                break;

                        case FileError.TYPE_MISMATCH_ERR:
                                msg += 'Invalid filetype';
                                break;

                        default:
                                msg += 'Unknown Error';
                        break;
                        };

                        hint(msg);
                };

有没有大佬解答一下。
发表于 2018-2-9 10:16:57 | 显示全部楼层
建议试试 最新 3.8 版本是否有这样问题??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

6

主题

22

帖子

54

积分

初级会员

Rank: 2

积分
54
QQ
 楼主| 发表于 2018-2-9 14:28:07 | 显示全部楼层
liangyongfei 发表于 2018-2-9 10:16
建议试试 最新 3.8 版本是否有这样问题??

mac目前不能用3.8 。公司要求不升级。怕弄坏环境。
回复 支持 反对

使用道具 举报

发表于 2018-2-9 15:42:16 | 显示全部楼层
周周泽龙 发表于 2018-2-9 14:28
mac目前不能用3.8 。公司要求不升级。怕弄坏环境。

那你先在其他机器测试一下 3.8 版本!可以吗??

你是要直接打开url 的文件吗??可以参考
http://docs.wex5.com/open-file/
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

6

主题

22

帖子

54

积分

初级会员

Rank: 2

积分
54
QQ
 楼主| 发表于 2018-2-9 15:48:08 | 显示全部楼层
liangyongfei 发表于 2018-2-9 15:42
那你先在其他机器测试一下 3.8 版本!可以吗??

你是要直接打开url 的文件吗??可以参考

大兄弟。是要下载图片,通过base64下载图片到本地,安卓的不考虑可以实现,但是ios的不能实现,使用file-transfer点击按钮触发下载功能没反应。使用window.requestFileSystem又无法创建文件夹,无法保存图片。
回复 支持 反对

使用道具 举报

发表于 2018-2-9 16:09:06 | 显示全部楼层
周周泽龙 发表于 2018-2-9 15:48
大兄弟。是要下载图片,通过base64下载图片到本地,安卓的不考虑可以实现,但是ios的不能实现,使用file- ...

你试试  base64 转成二进制 ,然后再使用 插件处理文件保存

插件参数执行的url 获取的应该是二进制的数据  ,base64 不行 ,需要自己转一下
http://docs.wex5.com/wex5-ui-question-list-2232

qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

6

主题

22

帖子

54

积分

初级会员

Rank: 2

积分
54
QQ
 楼主| 发表于 2018-2-9 16:40:47 | 显示全部楼层
liangyongfei 发表于 2018-2-9 16:09
你试试  base64 转成二进制 ,然后再使用 插件处理文件保存

插件参数执行的url 获取的应该是二进制的数 ...

你说那个插件transfer还是那个文件系统的那个?
回复 支持 反对

使用道具 举报

发表于 2018-2-9 16:47:36 | 显示全部楼层
周周泽龙 发表于 2018-2-9 16:40
你说那个插件transfer还是那个文件系统的那个?

系统文件那个也是封装的的  插件
你可以都试试 ,看转成二进制 行不
反正没有提供  base64  图片保存的插件!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

6

主题

22

帖子

54

积分

初级会员

Rank: 2

积分
54
QQ
 楼主| 发表于 2018-2-9 17:11:20 | 显示全部楼层
liangyongfei 发表于 2018-2-9 16:47
系统文件那个也是封装的的  插件
你可以都试试 ,看转成二进制 行不
反正没有提供  base64  图片保存的 ...

好的我试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-26 08:42 , Processed in 0.058544 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表