使用Visio Viewer载入数据库中的Visio图
需求很简单,在SQL Server数据库中存放用户上传的Visio文件,然后使用Visio Viewer在IE中直接显示用户上传的Visio文件的内容。 对于这个需求,我们需要分成两部分: 1.实现Visio文件的数据库存放和读取,并在Asp.Net中能够下载下来。 2.使用微软官方提供的Visio Viewer,在HTML中使用该Object来调用Visio图。 对于第一个功能。首先需要实现的是文件的上传。在文件上传时我们一般需要记录3个内容:文件的Content Type,文件名和文件的二进制内容。用户上传文件保存到数据库的功能代码很简单,我这里就不累述了。 然后说一下下载功能,我们新建一个ViewFile.aspx文件,然后在后台代码中编写如下: Page_Load( sender,EventArgs e)
{
var p = Mgr.GetProcessByID(Request.QueryString[""]);
Page.Response.Clear();
Page.Response.ContentType = p.FileContentType;
Page.Response.AddHeader("","" + p.FileName);
Page.Response.BinaryWrite(p.ProcessFile.ToArray());
Page.Response.End();
}
OK ,就这么简单,现在我们只需要运行程序,然后Url中输入ViewFile.aspx?id=6就可以读取到ID=6的Visio文件并下载下来。 接下来再说Visio Viewer的调用,编写一个新的页面VisioView.aspx, protected void Page_Load(object sender,EventArgs e)
{
StringBuilder sb = new StringBuilder();
sb.Append("");
sb.Append(" ");
sb.Append("" + "" + " ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append(" ");
sb.Append("");
lvisio. = sb.ToString();//这里是一个Literal控件
}
Visio文件正常下载,那么说明我们的src参数是正确的啊!这是什么原因造成的呢,经过简单的研究,发现原来是Visio Viewer的一个Bug吧,这个控件他只认识Visio格式后缀的url,而我们这里的文件URL是VisioFile.aspx?id=6,这个地方Visio Viewer认为不是一个Visio文件,所以根本不加载其中的内容了。 那么怎么解决呢?办法有好几个: 1.做一个.vsd的httphandler,然后指定解释.vsd格式的类,这样URL就变成了XXX.vsd格式了。 2.加一个无聊的参数:xx=.vsd。这样Visio Viewer就以为这个路径是Visio文件并进行加载了。 我采用第二个方案,修改代码第6行: sb.Append(" "); OK,我们存放在数据库中的Visio就可以正常显示在Visio Viewer中了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 什么是ASP.NET中的CRON作业? – C#
- ASP.Net Core Web Api中的异步视频流不起作用
- asp.net-mvc – 疑难解答反伪造令牌问题
- asp.net-mvc-4 – SimpleMembership – 向UserProfile添加电
- 如何配置asp.net进程在域帐户下运行?
- asp.net-mvc-3 – 不再使用XXXX.现在用于检测模型中的更改
- 如何在ASP.NET中注入包含&符号的脚本URL?
- Asp.Net MVC @Html.TextBox 只允许输入数字问题
- 嵌套的ASP.NET’应用程序’在IIS内继承父配置值?
- AutoMapper在asp.net core的使用