java扫描仪上传文件
问题:
项目中有一个功能,原来是用ckfinder做的,可以选择本地图片上传至服务器,然后将服务器的图片显示在浏览器中,并可以将图片地址保存到数据库;现在客户觉得麻烦,提出连接扫描仪扫描后直接上传至服务器,并在浏览器上显示,如何实现 ,有没有大神做过的?
这是客户给我的扫描仪文档

能用的就是这个html吧

我一开始以为是用jni驱动dll文件,但是我老大说直接可以用文档里的东西,现在老大出差去了,没辙了
这是那个html的源代码
<!DOCTYPEhtml>
<html>
<head>
<title>FHK Scan Control Test</title>
<styletype="text/css">
div#parameters {
width: 450px;
float: left;
}
div#results {width: 450px; }
h3, h4 {margin-left: 5px}
h4 {margin-bottom: 3px}
td {background-color: #CCEEFF;
padding: 9px;
}
textarea {
background-color: #CCEEFF;
border-style: groove;
border-width: 2px;
}
</style>
</head>
<body>
<script>
function selectScanner()
{
var rtn = fhkScan.SelectSource(0);
if (rtn == -1)
{
alert("Select scanner error, error code = " + fhkScan.ErrorCode);
}
}
function InitSettings()
{
fhkScan.FileName = document.getElementById("scanPath").value;
var pixelType = 0;
var rdbPixelType = document.getElementsByName("PixelType");
for (var i = 0; i < rdbPixelType.length; i++)
{
if (rdbPixelType[i].checked)
{
pixelType = rdbPixelType[i].value;
break;
}
}
if (pixelType == 0)
{
// Scan to Black & White
fhkScan.PixelType = 0; // 0 - Black & White, 1 - Grayscale, 2 - RGB Color
fhkScan.FileType = 1; // 0 - BMP, 1 - TIFF, 2 - Multipage TIFF, 3 - JPEG
fhkScan.CompressionType = 4; // 0 - No compress, 4 - CCITT G4 (only for B&W), 5 - JPEG
}
else
{
// Scan to Gray or Color
fhkScan.PixelType = pixelType; // 0 - Black & White, 1 - Grayscale, 2 - RGB Color
fhkScan.FileType = 3; // 0 - BMP, 1 - TIFF, 2 - Multipage TIFF, 3 - JPEG
fhkScan.JPGQuality = 2;// JPEG data compression level, 0 (small file size) ~ 6 (large file size)
}
var resolution = 0;
var rdbResolution = document.getElementsByName("Resolution");
for (var i = 0; i < rdbResolution.length; i++)
{
if (rdbResolution[i].checked)
{
resolution = rdbResolution[i].value;
break;
}
}
fhkScan.Resolution = resolution; // 0 - 200 dpi, 1 - 240 dpi, 2 - 300 dpi, 3 - 400 dpi, 4 - 500 dpi, 5 - 600 dpi
var paperSupply = 2;
var rdbPaperSupply = document.getElementsByName("PaperSupply");
for (var i = 0; i < rdbPaperSupply.length; i++)
{
if (rdbPaperSupply[i].checked)
{
paperSupply = rdbPaperSupply[i].value;
break;
}
}
fhkScan.PaperSupply = paperSupply; // 1 - ADF front, 2 - ADF double, 3 - ADF back
var scanRotate = 0;
var rdbScanRotate = document.getElementsByName("ScanRotate");
for (var i = 0; i < rdbScanRotate.length; i++)
{
if (rdbScanRotate[i].checked)
{
scanRotate = rdbScanRotate[i].value;
break;
}
}
fhkScan.ScanRotate = scanRotate; // 0 - None, 1 - 90 degrees, 2 - 180 degrees, 3 - 270 degrees, 4 - Automatic
var chkSkipWhitePage = document.getElementById("SkipWhitePage");
if (chkSkipWhitePage.checked)
{
fhkScan.SkipWhitePage = 6; // 0 - Do not skip, 1~15 - the ratio of black dots in the white page
}
else
{
fhkScan.SkipWhitePage = 0; // 0 - Do not skip, 1~15 - the ratio of black dots in the white page
}
var chkShowSourceUI = document.getElementById("ShowSourceUI");
if (chkShowSourceUI.checked)
{
fhkScan.ShowSourceUI = true; // true - Display the scanner source UI, false - Do not display
}
else
{
fhkScan.ShowSourceUI = false; // true - Display the scanner source UI, false - Do not display
}
var chkPromptOverwrite = document.getElementById("PromptOverwrite");
if (chkPromptOverwrite.checked)
{
fhkScan.Overwrite = 2;
}
else
{
fhkScan.Overwrite = 1;
}
fhkScan.ScanTo = 0;// 0 - to File, 1 - to DIB, 2 - to Memory, Suggest to File
fhkScan.ScanCount = -1;// Number of pages to scan, -1 - all pages on ADF
fhkScan.DetectPageSize = 2;
fhkScan.SourceCurrentScan = 0;
}
function startScan()
{
InitSettings();
var rtn = fhkScan.OpenScanner(0);
if (rtn == -1)
{
alert("Open scanner error, error code = " + fhkScan.ErrorCode);
return;
}
rtn = fhkScan.StartScan(0);
if (rtn == -1)
{
alert("Start scan error, error code = " + fhkScan.ErrorCode);
}
fhkScan.CloseScanner(0);
}
function OnScanToFileEvent(scanFilePath)
{
var txtResults = document.getElementById("result");
var str = txtResults.value;
str += scanFilePath;
str += "\r\n";
txtResults.value = str;
txtResults.scrollTop = txtResults.scrollHeight;
}
</script>
<scriptfor="fhkScan"event="ScanToFile(scanFilePath)">
OnScanToFileEvent(scanFilePath);
</script>
<h3>Scan Test</h3>
<p>
<inputtype="button"value="Select Scanner"onclick="selectScanner()"/>
<inputtype="button"value="Scan"style="width:100px"onclick="startScan()"/>
</p>
<divid="parameters">
<h4>parameters</h4>
<tableborder="1">
<tr>
<td>Scan Path:</td>
<td>
<inputtype="text"id="scanPath"size="35"value="D:\image"/>
</td>
</tr>
<tr>
<td>Pixel Type:</td>
<td>
<inputtype="radio"name="PixelType"value="0"/>Black & White<br/>
<inputtype="radio"name="PixelType"value="1"/>Grayscale<br/>
<inputtype="radio"name="PixelType"value="2"checked="checked"/>RGB Color<br/>
</td>
</tr>
<tr>
<td>Resolution:</td>
<td>
<inputtype="radio"name="Resolution"value="0"checked="checked"/>200 dpi<br/>
<inputtype="radio"name="Resolution"value="1"/>240 dpi<br/>
<inputtype="radio"name="Resolution"value="2"/>300 dpi<br/>
<inputtype="radio"name="Resolution"value="3"/>400 dpi<br/>
<inputtype="radio"name="Resolution"value="4"/>500 dpi<br/>
<inputtype="radio"name="Resolution"value="5"/>600 dpi<br/>
</td>
</tr>
<tr>
<td>Paper Supply:</td>
<td>
<inputtype="radio"name="PaperSupply"value="1"/>ADF Front<br/>
<inputtype="radio"name="PaperSupply"value="2"checked="checked"/>ADF Double<br/>
<inputtype="radio"name="PaperSupply"value="3"/>ADF Back<br/>
</td>
</tr>
<tr>
<td>Scan Rotate:</td>
<td>
<inputtype="radio"name="ScanRotate"value="0"checked="checked"/>None<br/>
<inputtype="radio"name="ScanRotate"value="1"/>90 degrees<br/>
<inputtype="radio"name="ScanRotate"value="2"/>180 degrees<br/>
<inputtype="radio"name="ScanRotate"value="3"/>270 degrees<br/>
<inputtype="radio"name="ScanRotate"value="4"/>Automatic<br/>
</td>
</tr>
<tr>
<td>Others:</td>
<td>
<inputtype="checkbox"id="SkipWhitePage"checked="checked"/>Skip White Page<br/>
<inputtype="checkbox"id="ShowSourceUI"/>Show Source UI<br/>
<inputtype="checkbox"id="PromptOverwrite"/>Prompt When Overwrite<br/>
</td>
</tr>
</table>
</div>
<divid="results">
<h4>results</h4>
<textareaid="result"cols="60"rows="37"readonly="readonly"></textarea>
</div>
<objectid="fhkScan"width="0"height="0"classid="clsid:07cf3b59-2cf2-4ee2-bcef-1320638005e7"></object>
</body>
</html>
解决方法:
采用泽优Web图片上传控件(img2)自动上传本地图片。
过程:
在扫描仪扫描后会提供一个事件,在这个事件中可以获取扫描仪扫描的图片路径,将这个路径添加到泽优Web图片上传控件(img2)中,img2就能够自动上传此图片。img2上传成功后会提供一个事件(post_complete),在此事件中可以得到图片上传后的地址。
详细介绍:http://blog.ncmem.com/wordpress/2019/09/05/泽优web图片上传控件img2产品介绍/
java扫描仪上传文件的更多相关文章
- Java ftp上传文件方法效率对比
Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...
- java 后台上传文件
java 后台上传文件 public static String uploadFile(File file, String RequestURL) throws IOException { Strin ...
- Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument
Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...
- java servlet上传文件并把文件内容显示在网页中
servlet3.0(JDK1.6)自带的API即可实现本地文件的上传,Servlet3.0新增了Part接口,HttpServletRequest的getPart()方法取得Part实现对象.下面我 ...
- Java ftp 上传文件和下载文件
今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...
- selenium测试(Java)--上传文件(十五)
1. 当页面中是通过input标签实现上传功能时,可以使用selenium来上传功能. 如下: package com.test.upload; import java.io.File; import ...
- java http 上传文件夹
用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...
- Java+web+上传文件夹
用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...
- java实现上传文件夹
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...
随机推荐
- C printf格式化输出 的跨平台
printf()在不同的系统上,占位符的可能有不同的写法,如: %ld:long int, 32位平台4 bytes %lld: long long int, 32位平台8 bytes 可以考虑使用 ...
- 007-elasticsearch5.4.3【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念
一.概述 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Elasticsearch 也是使用 Java 编写的,它的内部使用 L ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_7_字符串的转换相关方法
sequence n.顺序:次序:一系列:一连串 v.按顺序排列:测定(整套基因或分子成分的)序列 网络连续:数列:时序 butes.fori出循环 replace Ctrl+字母N也可以打开 输入s ...
- 打印流PrintWriter
* 打印流 * 字节流打印流 PrintStream * 字符流打印流PrintWriter * * 打印流的特点: * A:只有写数据的,没有读取数据,只能操作目的地,不能操作数据源 * * B:可 ...
- MySQL使用Navicat远程连接时报错1251
1.报错信息 client does not support authentication protocol requested by server:consider upgrading MySQL ...
- 【ABAP系列】SAP F4搜索帮助的高级版
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP F4搜索帮助的高级版 ...
- 重拾SQL——从无到有
2016.10.22 因为工作需要,在这里提前重拾sql. 0.创建并选择数据库 mysql> SHOW DATABASES; +--------------------+ | Database ...
- idea多行注释缩进
选中多行代码 - 按下tab键——向后整体移动 选中多行代码 - 按下shift + tab键——向前整体缩进(整体去掉代码前面的空格)
- Hand on Machine Learning 第二章:端到端的机器学习
1.import 模块 import os import tarfile from six.moves import urllib import pandas as pd pd.set_option( ...
- 详解 vue 双向数据绑定的原理,并实现一组双向数据绑定
1:vue 双向数据绑定的原理: Object.defineProperty是ES5新增的一个API,其作用是给对象的属性增加更多的控制Object.defineProperty(obj, prop, ...