捷宇高拍仪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的控件会把图片存在客户机上,你也能够本身去实现上传功能!

 

 

整体来讲仍是很简单的!

相关文章
相关标签/搜索