B/S(WEB)系统中使用Activex插件调用扫描仪实现连续扫描并上传图像(IE文件扫描并自动上传)
IE浏览器下使用Activex插件调用客户端扫描仪扫描文件并山传,可以将纸质档案(如合同、文件、资料等)扫描并将扫描图像保存到服务器,可以用于合同管理、档案管理等。
通过插件方式调用扫描仪扫描并获取图像,可以减少用户操作,减少操作出错,如一次扫描量大也可以使用连续扫描,由系统对扫描文件进行编号或进行其他处理。
web页面中只需通过js调用后启动扫描仪扫描,即可获取扫描文件的图像编码,再通过ajax或表单提交到服务器解码后保存为jpg文件即可。
通过服务器上程序处理后,可以方便以后浏览或去其它用户共享!
web调用扫描仪插件activex扫描图像上传并预览
页面HTML代码
- <div id="scanFileList" style="height:300px; overflow:auto;">
- </div>
- <div>
- <input type="checkbox" id="cbo_set" /><label for="cbo_set">显示扫描设置</label>
- <input type="checkbox" id="cbo_lxsm" /><label for="cbo_lxsm">连续扫描</label>
- <input type="button" value="扫描并提交" onclick="scanClick();" /> <input type="button" onclick="selscan();" value="选择扫描仪" />
- </div>
页面js调用Activex
- var tScaner = new ActiveXObject("TScan.Scaner");
- function selscan() {
- tScaner.SelectScanner();
- }
- var scanidx=1;
- function scanClick() {
- scanidx = 1;
- scanSubmit();
- }
- function scanSubmit() {
- //tScaner.JpegQuality = 30; //jpg图像质量
- //tScaner.ScanImageLeft=10; //扫描图像的位置(厘米)
- //tScaner.ScanImageTop=10; //扫描图像的位置(厘米)
- //tScaner.ScanImageWidth=20.0;//扫描图像的宽度 厘米
- //tScaner.ScanImageHeight=10.2;//扫描图像的高度 厘米
- if (tScaner.Scan($("#cbo_set").is(":checked")&&scanidx==1) == 0) { //仅在第一次扫描时显示设置界面//tScaner.Scan(true) //扫描前显示扫描设置界面
- var imgBase64 = tScaner.ScanImageData;
- if (imgBase64 != "") {
- //添加到列表
- $("#scanFileList").append("<div id='f_" + scanidx + "' style='width:80px;height:100px;margin-left:2px;float:left;border:solid 1px #ccc;'><img src='' width='80' height='100' /></div>");
- //上传图像
- $.post("fileup.aspx", { img: imgBase64, id: scanidx }, function(dat) {
- $("#f_" + dat.id + " img").attr("src", dat.src);
- }, "json");
- }
- //是否连续扫描
- if ($("#cbo_lxsm").is(":checked")) {
- scanSubmit();
- }
- }
- }
服务器端(fileup.aspx)接收文件代码(用户可以根据需要转换为Java、PHP等不同语言以适应现有的系统环境)
- string imgBase64 = Request.Params["img"];
- if (imgBase64 != null && imgBase64 != "")
- {
- byte[] imgbytes = Convert.FromBase64String(imgBase64);
- string imgpath = "temp/" + System.Guid.NewGuid() + ".jpg";
- System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(imgpath), System.IO.FileMode.OpenOrCreate);
- fs.Write(imgbytes, 0, imgbytes.Length);
- fs.Close();
- Response.Write("{id:" + Request.Params["id"] + ",src:'" + imgpath + "'}");
- }
在线演示地址http://dev.netcoming.com.cn/demos/TScan/Scan.html
插件下载地址http://download.csdn.net/detail/nxiaoping/5368329
插件授权 500/域名(或ip,不限制二级域名、端口,无其它限制)协助调试、测试、改进
B/S(WEB)系统中使用Activex插件调用扫描仪实现连续扫描并上传图像(IE文件扫描并自动上传)的更多相关文章
- 基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传
在基于SqlSugar的开发框架的服务层中处理文件上传的时候,我们一般有两种处理方式,一种是常规的把文件存储在本地文件系统中,一种是通过FTP方式存储到指定的FTP服务器上.这种处理应该由程序进行配置 ...
- 使用eclipse-hadoop插件无法再eclipse操作(上传、删除文件)
再conf中的hdfs-site.xml添加如下配置: <property><name>dfs.permissions</name><value>fal ...
- web网页中使用vlc插件播放相机rtsp流视频
可参考: 使用vlc播放器做rtsp服务器 使用vlc播放器播放rtsp视频 使用vlc进行二次开发做自己的播放器 vlc功能还是很强大的,有很多的现成的二次开发接口,不需配置太多即可轻松做客户端播放 ...
- thinkphp如何一次性的上传多个文件,在文件域中可以多选?
可以做到类似于某度网盘的样式吗? 文件夹的命名, 可以用单数, 也可以用复数, 在同一个项目中, 只要统一就好了. 毕竟项目开发不同于英语写作. 建议使用缩写, 不管是不是缩写都用单数, 这样简洁,容 ...
- MVC文件上传06-使用客户端jQuery-File-Upload插件和服务端Backload组件自定义控制器上传多个文件
当需要在控制器中处理除了文件的其他表单字段,执行控制器独有的业务逻辑......等等,这时候我们可以自定义控制器. MVC文件上传相关兄弟篇: MVC文件上传01-使用jquery异步上传并客户端验证 ...
- 如何在Web页面里面使用高拍仪扫描上传图像
问题: 在网页上,客户端访问的时候,可以扫描图象(通过扫描仪),并放到网页上,上传到服务器,如何实现?就是提供扫描仪的驱动程序,并使用扫描仪来扫描图象 ,有没有此类的ActiveX控件 回复: 目前大 ...
- 强大的支持多文件上传的jQuery文件上传插件Uploadify
支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片.用户可以通过UIImagePickerController类提供的交互对话框来从相册中选择图像.但是,注意:相册中的图片机器路径无法直 ...
- bootstrap-fileinput上传文件的插件使用总结----编辑已成功上传过的图片
http://plugins.krajee.com/file-plugin-methods-demo 具体操作 http://plugins.krajee.com/file-preview-manag ...
随机推荐
- C语言常用关键字及运算符操作---关键字
每个知识点4问: 1. 是什么? 2. 什么时间用? 3. 怎么用? 4.为什么这么用? 1. 32个关键字 //(1)sizeof 的用法 //sizeof 是关键字,让编译器帮我们查看内存空间存储 ...
- dnsquery - 使用解析程序查询域名服务器
SYNOPSIS(总览) dnsquery [-n nameserver ] [-t type ] [-c class ] [-r retry ] [-p period ] [-d ] [-s ] [ ...
- 和为S
2518 和为S 2 秒 262,144 KB 10 分 2 级题 小b有一个01序列A,她想知道A有多少个非空连续子序列和为S. 你能帮帮她吗? 收起 输入 第一行输入一个数n,表示A的长度 ...
- MATLAB读取每个文件夹下的badcsv文件后合并为总的badexcel文件
clear; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取子文件夹中bad.csv数据%并把所有数据写到一个excel文件中%%%%%%%%%%%%%%%%%% ...
- mybatis-4 mybatis与spring结合使用及原理
1.创建项目maven,方便依赖下载.使用的jar如下: <dependencies> <dependency> <groupId>org.springframew ...
- ZOJ - 1655 Transport Goods(单源最长路+迪杰斯特拉算法)
题目: 有N-1个城市给首都(第N个城市)支援物资,有M条路,走每条路要耗费一定百分比(相对于这条路的起点的物资)的物资.问给定N-1个城市将要提供的物资,和每条路的消耗百分比.求能送到首都的最多的物 ...
- [CF] 402 E. Strictly Positive Matrix
一个矩阵,自乘无限次后能否全为正数? 如果n比较小,可以二分一下,但是这里n很大,乘一次都无法接受 可以考虑实际含义:矩阵看成邻接矩阵,那么0就是没有边,其余就是有边. 我们知道邻接矩阵自乘k次就相当 ...
- Properties类操作.properties配置文件方法总结
一.properties文件 Properties文件是java中很常用的一种配置文件,文件后缀为“.properties”,属文本文件,文件的内容格式是“键=值”的格式,可以用“#”作为注释,jav ...
- 编码&解码
编码与解码首先,明确一点,计算机中存储的信息都是二进制的 编码/解码本质上是一种映射(对应关系):比如‘a’用ascii编码则是65,计算机中存储的就是00110101,但是显示的时候不能显示0011 ...
- 条款9:绝不在构造和析构过程中调用virtual函数(Never call virtual functions during construction or destruction)
NOTE:在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造函数和析构函数的那层)