用appcan开发的app如何在手机上查看附件和预览附件呢?今天就为大家介绍一下,用APP看附件实大是太方便了。

1、直接上代码吧,首先要初始化插件用到的所有方法。这个方法中

cbIsFileExistByPath 是判断文件是否存在时的回调函数。如果不存在就到服务器上去下载,如果存在就直接打开。
cbCreateDownloader 创建下载对象回调,
onStatus 是下载状态的回调,在这里面我个可以在页面上加入下载的进度条。
 
        //初始化
appcan.ready(function () { initLoadDown();
});
var docName;
var savePath;
var serviceUrl;
var id; function initLoadDown() {
var cText = 0;
var cJson = 1;
var cInt = 2;
uexFileMgr.cbIsFileExistByPath = function (opId, dataType, data) {
if (data == 0) {
//不存在
appcan.window.openToast("正在加载", 2000, 5, 1);
uexDownloaderMgr.createDownloader(id);
} else if (data == 1) { appcan.window.openToast("正在打开", 1000, 5, 1);
uexDocumentReader.openDocumentReader(savePath);//打开 } else {
appcan.window.openToast("出错啦", 2000, 5, 0);//出错//出错
}
} uexDownloaderMgr.cbCreateDownloader = function (opCode, dataType, data) {
switch (dataType) {
case cText:
alert("uex.cText");
break;
case cJson:
alert("uex.cJson");
break;
case cInt:
var headJson = '{"Content-type":"application/json;charset=utf-8"}';
uexDownloaderMgr.setHeaders(1, headJson);
uexDownloaderMgr.download(id, serviceUrl, savePath, 1); break;
default:
appcan.window.openToast("出错啦", 2000, 5, 0);//出错
}
}
uexDownloaderMgr.onStatus = function (opCode, fileSize, percent, status) {
switch (status) {
case 0:
document.getElementById('percentage').innerHTML = "<span style='color:green'>下载进度:" + percent + "%</span>";
break;
case 1:
uexDownloaderMgr.closeDownloader(id);
uexDocumentReader.openDocumentReader(savePath); break;
case 2:
appcan.window.openToast("下载失败,系统中找不到该文件", 2000, 5, 0);
uexDownloaderMgr.closeDownloader(id);
break;
case 3:
appcan.window.openToast("下载取消", 2000, 5, 0);
break;
}
}
}

2、用户在点击文件时时肯定会触发单击事件。这里是所有预览开始方法。只要判断文件是否存在就行了,他们自动触发1中的回调函数cbIsFileExistByPath

savePath 是你手机上文件的保存路径,serviceUrl是服务器中文件的路径。参数name是文件件,id随便给一个值就行,可能是为了在手机上区分不同文件。v是时间戳加文件名(存入数据的名字和存在服务器中的名字)

function openDocument(v, name) {
savePath = "wgt://data/down/" + name;
id = 2;
var d = new Date();
var _year = d.getFullYear();
serviceUrl = GetApprovalServiceHostIp() + "/upload/"+ _year +"/" + v;
uexFileMgr.isFileExistByPath(id, savePath);//根据路径判断文件是否存在
};

3、代码已完成了,因为很多功能都是APPCAN公共的插件帮我们完成了,那我就要在打包是加入这些插件。

重要事件:有需要微信投票、阅读量、注册、点赞的朋友可以找我哦,百万水军。tel/vx:18963948278

appcan 文件下载与预览的更多相关文章

  1. minio + kkFileView 实现在线预览

    minio上传的pdf之类文件不支持预览,地址在浏览器访问时会直接下载,现在搭配kkFileView文件预览 1.minio查看之前的安装方式 2.kkFileView安装 docker方式 1.拉取 ...

  2. nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题

    公司项目逐渐增多,对效率的要求越来越高,不同项目分部不同服务器,最初想用nginx 就是为了多个项目用一个url和服务器宕机解决方案 nginx也可作为附件服务器,毕竟nginx也对静态文件支持较好, ...

  3. 使用canvas实现图片预览、缩放(压缩)以及生成文件下载

    参考 https://www.runoob.com/html/html5-canvas.html https://www.cnblogs.com/yuanzhiguo/p/8288822.html h ...

  4. 解决 Asp.Net5 在视频文件下载预览时无法快进的问题

    前情提要 https://www.cnblogs.com/puzhiwei/p/15265005.html 在解决.Net5 如何修改Content-Disposition实现在线预览的功能后,我又遇 ...

  5. 实战动态PDF在线预览及带签名的PDF文件转换

    开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3 ...

  6. [SWF]在线预览文档下载

    写本文的缘由:领导有些项目文档需要审阅,网站上的文档只能在线预览,没有提供下载.开始用截屏的方式,可想而知这将会是多大的重复性劳动.所以研究了一下,发现可以曲线救国,所以在这里分享一下. 问题描述:这 ...

  7. uploadify插件实现多个图片上传并预览

    使用uploadify插件可方便实现图片上传功能.兼容ie6.ie7. 上传成功之后使用插件的回调函数读取json数据,根据url实现图片预览. 效果图: 点击浏览文件上传图片,图片依次在右侧显示预览 ...

  8. Java实现文件的预览

    最近项目需要用到文件的预览功能,就开始在网上收集资料,学习了几种文件预览的方法.我集成到我项目内测试的有以下三种,最后使用的是第三种: 直接使用别人提供的服务 例如:office web 365 使用 ...

  9. 动态PDF在线预览

    实战动态PDF在线预览及带签名的PDF文件转换 开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是 ...

随机推荐

  1. Hibernate在MySQL中查询区分大小写

    MySQL查询中默认是不区分大小写的,比如如下语句: SELECT * from PersonBehDevice where flag=0 AND devicecode ='ddjc' 查询结果如下: ...

  2. mysql事务级别和spring中应用

    一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

  3. 什么是PR劫持和权重劫持

    http://www.wocaoseo.com/thread-265-1-1.html PR劫持OR网站权重劫持虽然概念不一样,但是其原理是一样的,同样属于seo中的灰色手段,是我们抵制和反对的seo ...

  4. 面试中的这些点,你get了吗?

    一.前言 因为疫情的原因,小农从七月份开始找工作,到现在已经工作了一个多月了,刚开始找工作的时候,小农也担心出去面试技能不够,要懂的东西很多,自己也准备可能会面试一段时间,从找工作到入职花了十几天,总 ...

  5. 接口测试中GET方法的获取

    今天在这里给大家介绍一下get方法,其实这些方法大家可以看一下源码里面的介绍只需要在代码中输入: import requests help(requests) 就可以看到带有示例的解释: 现在我们来完 ...

  6. WebRTC的VAD 过程解读

    摘要: 在上一篇的文档中,分析unimrcp中vad算法的诸多弊端,但是有没有一种更好的算法来取代呢.目前有两种方式 1. GMM   2. DNN. 其中鼎鼎大名的WebRTC VAD就是采用了GM ...

  7. 网络测速神器:SpeedTest深度指南

    最近在测试一个项目,里面涉及到一个测试case:在linux服务器上,当网络带宽较差时,观察服务的消息处理能力和表现.限制网卡带宽有许多方法,比如Wondershaper或者ethtool.那验证限速 ...

  8. Codeforces 1324E Sleeping Schedule DP

    题意 给你一个长度为\(n\)的数组\(a\)和3个数字\(h,l和r\).\(t\)初始为0,每次可以使\(t=(t+a_i) \% h\)或者\(t=(t+a_i-1)\%h\),如果这时\(t\ ...

  9. 利用递归方法实现链表反转、前N个节点反转以及中间部分节点反转

    一.反转整个链表 问题:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5-&g ...

  10. Ubuntu 16.04 安装Python 3.6

    1.配置软件仓库,因为python 3.6 新版没有发布到ubuntu的正式仓库中,咱们通过第3方仓库来做.在命令行中输入: sudo add-apt-repository ppa:jonathonf ...