应甲方要求,须要把高拍仪集成到B/S系统中来,在集成过程当中遇到的几点问题作为总结,以备查找。浏览器
一、甲方送来的高拍仪是淘宝上买来的,型号是XY530,功能很是简单,成像效果也很通常。若是没有其它要求,能够尝试用一下。服务器
(PS,捷宇的400客户妹子服务态度挺好,晚上8点多还没下班,赞一个!)框架
,这货长这样,很朴素!ide
二、官方的光盘中只有驱动和软件,没有SDK开发包。这里是最新的,http://pan.baidu.com/s/1c247XgG 密码:jmpbui
由于集成在网页上是ActiveX控件,仅支持IE浏览器,并且仅支持IE9及以上的浏览器。客户机是XP系统的就别期望了!this
三、SDK中的服务器端很简陋,不建议在项目中直接使用。个人项目是.net的,这里贴出C#代码。.net
[HttpPost] public ActionResult GPYUpload(string folderId) { string msgnull = "", msgconvert = "", msgex = ""; bool flag = true; for (int i = 0; i < Request.Files.Count;i++ ) { try { if (Request.Files[i] == null || string.IsNullOrEmpty(Request.Files[i].FileName) || Request.Files[i].ContentLength == 0) { msgnull = "部分文件未解析到!"; flag = false; continue; } string FileName = Path.GetFileName(Request.Files[i].FileName); string userId = OperatorProvider.Provider.Current().UserId; string fileGuid = Guid.NewGuid().ToString(); long filesize = Request.Files[i].ContentLength; string FileEextension = Path.GetExtension(Request.Files[i].FileName); string uploadDate = DateTime.Now.ToString("yyyyMMdd"); string virtualPath = string.Format("~/DocumentFile/{0}/{1}/{2}{3}", userId, uploadDate, fileGuid, FileEextension); string fullFileName = this.Server.MapPath(virtualPath); string path = Path.GetDirectoryName(fullFileName); Directory.CreateDirectory(path); if (!System.IO.File.Exists(fullFileName)) { Request.Files[i].SaveAs(fullFileName); FileInfoEntity fileInfoEntity = new FileInfoEntity(); fileInfoEntity.IsOnlineView = false; fileInfoEntity.Create(); fileInfoEntity.FileId = fileGuid; if (!string.IsNullOrEmpty(folderId)) { fileInfoEntity.FolderId = folderId; } else { fileInfoEntity.FolderId = "0"; } fileInfoEntity.FileName = FileName;// Request.Files[i].FileName; fileInfoEntity.FilePath = virtualPath; fileInfoEntity.FileSize = filesize.ToString(); fileInfoEntity.FileExtensions = FileEextension; fileInfoEntity.FileType = FileEextension.Replace(".", ""); fileInfoBLL.SaveForm("", fileInfoEntity); } } catch (Exception ex) { msgex += ex.Message; continue; } } if (flag && Request.Files.Count>0) { return Success("上传成功。"); } else { return Content(msgnull + ";" + msgconvert + ";" + msgex); } }
四、项目中使用的是IFrame嵌套各个子页面的,当把SDK例子完整放到系统中,一直报错,提示找不到方法。其实这是一个很大的坑!code
仅仅是X-UA-Compatible值设置不对。orm
个人页面中是这样的<meta http-equiv="X-UA-Compatible" content="IE=edge">,SDK例子中是<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">,改为后者就好。
blog
我就比较悲催了,父页面的代码不能改动(框架模版),在IFrame子页面中设置成EmulateIE9,仍是无效!
网上查资料,有人说是微软的BUG,原文链接以下:
http://bbs.csdn.net/topics/390634956
只好改为弹出窗口方式了,实在没有办法了。
五、吐槽一下捷宇的SDK,接口太简陋了,可操做的余地太少了。上传过程当中的提示太丑太丑,完成后也没有钩子执行本身的方法,就一个弹出框!
不过ActiveX的控件会把图片存在客户机上,你也能够本身去实现上传功能!
整体来讲仍是很简单的!