捷宇高拍儀XY530 網頁集成總結

應甲方要求,須要把高拍儀集成到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的控件會把圖片存在客戶機上,你也能夠本身去實現上傳功能!

 

 

整體來講仍是很簡單的!

相關文章
相關標籤/搜索