扫描识别工具Dynamic Web TWAIN使用教程:将图像上传到Web服务器(上)
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。本文为你介绍在Dynamic Web TWAIN中如何将图像上传到Web服务器。
将图像上传到Web服务器
在我们上传图像之前,我们需要设置服务器IP/名称,设置端口号,以及定义操作页面的路径。操作页面指的是接收包含图像数据的HTTP Post请求的目标脚本,并处理所有服务器端操作,如将数据保存在硬盘或数据库上等。以下是一个示例:
上传并保存在服务器磁盘上
var strHTTPServer = location.hostname; DWObject.HTTPPort = location.port == "" ? 80 : location.port; var CurrentPathName = unescape(location.pathname); var CurrentPath = CurrentPathName.substring(0, CurrentPathName.lastIndexOf("/") + 1); var strActionPage = CurrentPath + "actionPage.aspx"; var uploadfilename = "TestImage.pdf";
在代码段中
strHTTPServer用于存储服务器名称,该名称指定将图像上传到哪个服务器。你也可以将服务器的IP用于相同目的。如果你想将图像上传到与当前页面相同的服务器,我们建议你使用location.hostname来获取hostname运行时。
HTTPPort属性指定用于上传的HTTP端口。通常,端口80用于HTTP,端口443用于HTTPS。如果你不确定端口号,可以使用location.port ==“”? 80:location.port在运行时获取当前端口号。
CurrentPathName和CurrentPath用于构建操作页面的相对路径。
strActionPage存储操作页面的相对路径。
uploadfilename存储上传图像的文件名。你应该相应地更改文件名的扩展名。
注意:
在10.0及更高版本中,我们使用浏览器作为上传代理。由于浏览器有安全限制,不允许客户端脚本(例如,JavaScript)向另一个域发出请求。因此,当你尝试将映像上传到具有不同域,子域,端口或协议的服务器时,你需要通过添加HTTP响应头文件来配置服务器以允许此类请求,即:Access-Control-Allow-Origin: *
以IIS 7为例。你需要做的是将以下代码段合并到应用程序/站点根目录的web.config文件中:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET,PUT"/> <add name="Access-Control-Allow-Headers" value="x-requested-with"/> <add name="Access-Control-Allow-Credentials" value="true" /> </customHeaders> </httpProtocol> </system.webServer> </configuration>
如果你还没有web.config文件,只需创建一个名为“web.config”的新文件并添加上面的代码段。
方法
现在,我们可以调用其中一个HTTP上传方法来上传图像。我们共有8种方法:
格式 | 方法 |
任何类型 | |
支持的图像 | |
多页PDF | |
多页TIFF |
我们以这个方法HTTPUploadAllThroughPostAsPDF( )为例:
DWObject.HTTPUploadAllThroughPostAsPDF( strHTTPServer, strActionPage, uploadfilename, OnHttpUploadSuccess, OnHttpUploadFailure );
使用此方法,Dynamic Web TWAIN控件中的所有图像将作为一个多页PDF文件发送到Web服务器。
在上面的代码中,参数OnHttpUploadSuccess和OnHttpUploadFailure是可选的回调函数。如果它们存在,则该方法是异步的;否则,该方法是同步的。你可以异步使用这些方法以避免可能出现浏览器挂起。
以下是这两个函数的简单实现:
function OnHttpUploadSuccess() { console.log('successful'); } function OnHttpUploadFailure(errorCode, errorString, sHttpResponse) { alert(errorString + sHttpResponse); }
如果要将一个图像上传为单页文件,可以使用HTTPUploadThroughPost( ) 或 HTTPUploadThroughPostEx( )。
如果要将所选图像上传为多页文件,可以使用HTTPUploadThroughPostAsMultiPagePDF( ) 或 HTTPUploadThroughPostAsMultiPageTIFF( )。
下一篇文章将为大家如何将图像上传到FTP、数据库等。