Web应用中的图像扫描与上传

在开发Web应用时,图像扫描与上传是一个常见需求。本文将指导如何在Web应用中实现这一功能,并解决一些常见问题。

图像上传过程中,可能需要解决以下问题:

  • 如何处理图像格式?
  • 是否涉及多页文档?
  • 如果需要与扫描图像一起上传额外的文本信息怎么办?
  • 如何确保图像数据在网络上的安全?
  • 图像/文档应该存储在哪里?

为了帮助更好地理解,提供了一个简单的示例,可以在部署应用到Web服务器后,亲自尝试图像扫描和上传的功能。该示例是基于Dynamsoft提供的第三方组件——Dynamic Web TWAIN开发的。

关于Dynamic Web TWAIN

Dynamsoft的Dynamic Web TWAIN是一个浏览器插件,允许从扫描仪和其他TWAIN兼容设备扫描图像。扫描后,可以在不离开浏览器的情况下,将图像编辑并上传到本地文件夹、Web服务器、FTP站点、SharePoint和数据库。

可以通过在线演示来了解图像采集SDK的一般概念。

  • 与主流浏览器兼容,包括IE、Firefox、Chrome、Safari和Opera
  • 能够从扫描仪和其他TWAIN兼容设备扫描图像
  • 支持BMP、JPEG、PNG、单/多页PDF和单/多页TIFF格式
  • 支持SSL
  • 支持Cookie和会话
  • 支持与图像一起上传额外的文本信息

能够与主流浏览器一起工作,并能够以整洁的方式从扫描仪扫描图像,是Dynamsoft提供的优秀特性。由于本文重点介绍图像上传,提供了一个简单的示例,允许一次扫描多个图像。

function DWT_AcquireImage() { if (DWT_DWTSourceContainerID == "") { WebTWAIN.SelectSource(); } else { WebTWAIN.SelectSourceByIndex(document.getElementById(DWT_DWTSourceContainerID).selectedIndex); } WebTWAIN.CloseSource(); WebTWAIN.OpenSource(); WebTWAIN.IfFeederEnabled = true; WebTWAIN.IfShowUI = false; WebTWAIN.PixelType = 2; WebTWAIN.Resolution = 200; WebTWAIN.AcquireImage(); }

通过将IfFeederEnabled设置为true,文档将从自动文档送纸器(ADF)扫描。除了示例中硬编码的像素类型和分辨率之外,还有更多属性,如页面大小和亮度,可以帮助标准化(或定制)图像特性。

以下示例展示了如何将扫描的图像上传到Web服务器。根据要求,也可以将图像上传到数据库、本地文件夹,甚至通过电子邮件发送给某人。

是否通过SSL上传图像

var strHTTPServer = location.hostname; if (window.location.protocol != "https:") { WebTWAIN.HTTPPort = location.port == "" ? 80 : location.port; WebTWAIN.IfSSL = false; } else { WebTWAIN.HTTPPort = 443; WebTWAIN.IfSSL = true; }

创建一个文本框"txt_Directory"。使用以下代码行将额外的信息与图像一起上传。

WebTWAIN.ClearAllHTTPFormField(); WebTWAIN.SetHTTPFormField("Directory", document.getElementById("txt_Directory").value);

将扫描的图像上传到Web服务器,并以多页PDF格式保存。

if (!DWT_CheckIfImagesInBuffer()) { return; } var i, strHTTPServer, strActionPage, strImageType; var ID_txt_fileName = document.getElementById("txt_fileName"); ID_txt_fileName.value = ID_txt_fileName.value.trim(); ID_txt_fileName.className = ""; if (!strre.test(ID_txt_fileName.value)) { ID_txt_fileName.className += "invalid"; ID_txt_fileName.focus(); AppendMessage("Please input file name. Currently only English names are allowed."); return; } var CurrentPathName = unescape(location.pathname); var CurrentPath = CurrentPathName.substring(0, CurrentPathName.lastIndexOf("/") + 1); strActionPage = CurrentPath + "SaveToFile.aspx"; var uploadfilename = ID_txt_fileName.value + ".pdf"; if ((WebTWAIN.SelectedImagesCount == 1) || (WebTWAIN.SelectedImagesCount == WebTWAIN.HowManyImagesInBuffer)) { WebTWAIN.HTTPUploadAllThroughPostAsPDF(strHTTPServer, strActionPage, uploadfilename); } else { WebTWAIN.HTTPUploadThroughPostAsMultiPagePDF(strHTTPServer, strActionPage, uploadfilename); } DWT_CheckErrorString();

SaveToFile.aspx.cs

using System; using System.IO; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class SaveToFile : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String strExc = ""; try { HttpFileCollection files = HttpContext.Current.Request.Files; HttpPostedFile uploadfile = files["RemoteFile"]; string directoryPath = System.Web.HttpContext.Current.Request.MapPath(".") + "/ImageScanned/" + HttpContext.Current.Request.Form["Directory"] + "/"; if (!System.IO.Directory.Exists(directoryPath)) System.IO.Directory.CreateDirectory(directoryPath); string filePath = directoryPath + uploadfile.FileName; uploadfile.SaveAs(filePath); } catch (Exception exc) { strExc = exc.ToString(); String strField1Path = HttpContext.Current.Request.MapPath(".") + "/" + "log.txt"; if (strField1Path != null) { StreamWriter sw1 = File.CreateText(strField1Path); sw1.Write(strExc); sw1.Close(); } Response.Write(strExc); } } }

支持的图像格式包括BMP、JPEG、PNG、(多页)TIFF和(多页)PDF。

可以在以下链接找到更多Dynamic Web TWAIN的示例:

  • Dynamic Web TWAIN Samples
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485