捷宇高拍仪XY530 网页集成总结

应甲方要求,需要把高拍仪集成到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的控件会把图片存在客户机上,你也可以自己去实现上传功能!

 

 

总体来说还是很简单的!

 

posted on 2017-03-14 15:08  Raymus  阅读(1548)  评论(0编辑  收藏  举报

导航