應甲方要求,需要把高拍儀集成到B/S系統中來,在集成過程中遇到的幾點問題做為總結,以備查找。 1、甲方送來的高拍儀是淘寶上買來的,型號是XY530,功能非常簡單,成像效果也很一般。如果沒有其它要求,可以嘗試用一下。 (PS,捷宇的400客戶妹子服務態度挺好,晚上8點多還沒下班,贊一個!) ,這貨長這 ...
應甲方要求,需要把高拍儀集成到B/S系統中來,在集成過程中遇到的幾點問題做為總結,以備查找。
1、甲方送來的高拍儀是淘寶上買來的,型號是XY530,功能非常簡單,成像效果也很一般。如果沒有其它要求,可以嘗試用一下。
(PS,捷宇的400客戶妹子服務態度挺好,晚上8點多還沒下班,贊一個!)
,這貨長這樣,很朴素!
2、官方的光碟中只有驅動和軟體,沒有SDK開發包。這裡是最新的,http://pan.baidu.com/s/1c247XgG 密碼:jmpb
因為集成在網頁上是ActiveX控制項,僅支持IE瀏覽器,而且僅支持IE9及以上的瀏覽器。客戶機是XP系統的就別指望了!
3、SDK中的伺服器端很簡陋,不建議在項目中直接使用。我的項目是.net的,這裡貼出C#代碼。
[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); } }
4、項目中使用的是IFrame嵌套各個子頁面的,當把SDK例子完整放到系統中,一直報錯,提示找不到方法。其實這是一個很大的坑!
僅僅是X-UA-Compatible值設置不對。
我的頁面中是這樣的<meta http-equiv="X-UA-Compatible" content="IE=edge">,SDK例子中是<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">,改成後者就好。
我就比較悲催了,父頁面的代碼不能改動(框架模版),在IFrame子頁面中設置成EmulateIE9,還是無效!
網上查資料,有人說是微軟的BUG,原文連接如下:
http://bbs.csdn.net/topics/390634956
只好改成彈出視窗方式了,實在沒有辦法了。
5、吐槽一下捷宇的SDK,介面太簡陋了,可操作的餘地太少了。上傳過程中的提示太醜太醜,完成後也沒有鉤子執行自己的方法,就一個彈出框!
不過ActiveX的控制項會把圖片存在客戶機上,你也可以自己去實現上傳功能!
總體來說還是很簡單的!