问题:

项目中有一个功能,原来是用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扫描仪上传文件的更多相关文章

  1. Java ftp上传文件方法效率对比

    Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...

  2. java 后台上传文件

    java 后台上传文件 public static String uploadFile(File file, String RequestURL) throws IOException { Strin ...

  3. Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument

    Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...

  4. java servlet上传文件并把文件内容显示在网页中

    servlet3.0(JDK1.6)自带的API即可实现本地文件的上传,Servlet3.0新增了Part接口,HttpServletRequest的getPart()方法取得Part实现对象.下面我 ...

  5. Java ftp 上传文件和下载文件

    今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...

  6. selenium测试(Java)--上传文件(十五)

    1. 当页面中是通过input标签实现上传功能时,可以使用selenium来上传功能. 如下: package com.test.upload; import java.io.File; import ...

  7. java http 上传文件夹

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...

  8. Java+web+上传文件夹

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...

  9. java实现上传文件夹

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...

随机推荐

  1. 从进度条和alert的出现顺序来了解浏览器 UI 渲染 & JS进程

    项目里有一个需求是在上传文件的时候需要显示进度条,那么理所当然的在上传完成后就需要提示用户上传完毕并且更新进度条. 之前的预期表现是,上传完毕后,先更新进度条到100%,再alert出提示,所以代码如 ...

  2. unity不规则按钮解决方案

    一种是alpha检测 一种是设置collider 参考: https://zhuanlan.zhihu.com/p/34204396 下面给出第二种方案代码 ///按钮多边形点击方案,注意Canvas ...

  3. 安全运维 - Linux系统攻击回溯

    入侵排查思路 (1)- 日志分析 日志分析 默认日志路径: /var/log 查看日志配置情况: more /etc/rsyslog.conf 重要日志: 登录失败记录: /var/log/btmp ...

  4. js 一道题目引发的正则的学习

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  5. 如何选择适合自己的Linux版本

    如何选择适合自己的Linux版本: 1.Linux桌面系统,首选Ubuntu; 2.服务器端的Linux系统,首选RHEL或CentOS,这两种中首选CentOS,如果公司有钱,不在乎成本也可以选择R ...

  6. Kosaraju算法 有向图的强连通分量

    有向图的强连通分量即,在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...

  7. Codeforces 601B(贪心+斜率+组合数学+单调栈)

    题面 传送门 题目大意: L(h)的值是区间[L,R]内,abs(h[i]-h[j])/(i-j)的最大值.现在有q个询问,每个询问表示询问区间[L,R]内,所有子序列的L(h)的值的和 分析 将|h ...

  8. [集合]List

    List 存取有序,有索引,可以重复 ArrayList去除集合中字符串的重复值(字符串的内容相同) public static void main(String[] args) { ArrayLis ...

  9. python Calendar 模块导入及用法

    Calendar 是python 日历模块,此模块的函数都是日历相关的,例如打印某月的字符月历,星期之类的模块,下面剖析python Calendar 模块导入及用法. 1,python导入日历模块 ...

  10. Failed to determine the https port for redirect

    原文:Failed to determine the https port for redirect warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedir ...