|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Active Server Page技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。静态|办事器|图表 使用OWC办事器端组件静态生成图表
之前在这里也已经有一些文章谈到了在ASP中生成静态图表的成绩,但那些文章中所谈到的一些办法都有某些方面的限制,如需求在客户端装置office2000或装置OWC,有些则能够在Intranet中利用时没甚么成绩,但在经由过程Internet会见的时分,便可能呈现没法正常任务的景象(这次要和SQL Server的平安设置有关)。那末,咱们若何来防止这些成绩呢?有一个很好的办法,就是将在ASP中生成的图表转换成图片文件保留在办事器上,如许用户终究看到的是GIF图片格局的图表,我想如今的任何一种阅读器在旁观GIF图片的时分都没甚么成绩吧。:)或许独一能够的成绩就是若何对这些生成的一时图片文件的处置成绩,关于这个成绩在最初咱们会会商。
上面咱们会用一个详细的实例来讲明这类办法。法式的测试情况为:
NT4.0(SP5)+IIS4.0+SQL Server7.0+IE5.0,要运转上面的ASP法式,请将上面的代码Copy,保留到你的一个虚拟目次中,在这个虚拟目次中创立一个子目次tmp(你能够修正代码中的途径以合适本人的途径),在IIS中设置read权限便可,注重了,在NT上你必需设置此tmp目次对IUSR_servername用户最少有Change的权限。创立一个pubs的DSN指向SQL Server的pubs数据库。
以下是代码:
chart.asp
<%
Function ExportChartToGIF(cspace)
Dim fso
Dim sFilePath
Dim sFileName
'生成一时文件的文件名
set fso = CreateObject("Scripting.FileSystemObject")
sFilePath = Request.ServerVariables("PATH_TRANSLATED")
sFilePath = left(sFilePath, InStrRev(sFilePath, "\"))
sFilePath = sFilePath & "tmp\"
sFileName = fso.GetTempName()
sFileName = sFileName & ".gif"
set fso=nothing
'将chart转换成GIF文件保留在一时目次
m_cspace.ExportPicture sFilePath & sFileName, "gif", 200, 150
'将生成的一时图片报存在session中以便于删除
Session("TC:" & sFilePath & sFileName) = sFilePath & sFileName
ExportChartToGIF = sFileName
End Function
Sub BindChartToDSC(cspace, dsc, sRSName, sCategories, sValues)
Dim cht
Dim ser
set c = cspace.Constants
cspace.Clear
' 绑定命据源
set cspace.DataSource = dsc
cspace.DataMember = sRSName
set cht = cspace.Charts.Add()
cht.HasLegend = True
cht.Type = c.chChartTypePie
set ser = cht.SeriesCollection.Add()
ser.SetData c.chDimCategories, 0, sCategories
ser.SetData c.chDimValues, 0, sValues
set dls = ser.DataLabelsCollection.Add()
dls.HasPercentage = True
dls.HasValue = False
End Sub
%>
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>使用OWC静态生成图表</title>
</head>
<body>
<%
set m_cspace = server.CreateObject("OWC.Chart")
set DSC = server.CreateObject("OWC.DataSourceControl")
DSC.ConnectionString = "DSN=pubs;uid=sa"
DSC.RecordsetDefs.AddNew "select distinct state,num=COUNT(*) FROM authors GROUP BY state",DSC.Constants.dscCommandText,"ChartData"
BindChartToDSC m_cspace, DSC, "ChartData", "state", "num"
m_sFilePath = ExportChartToGIF(m_cspace)
set m_cspace=nothing
set m_cht=nothing
%>
<br><br>
<img src="tmp/<%= m_sFilePath %>">
</BODY>
</HTML>
个中咱们会发明两个有效的函数:ExportChartToGIF和BindChartToDSC
ExportChartToGIF(cspace)是一个用来将chart转换成GIF文件的函数
cspace:一个OWC.Chart的实例
BindChartToDSC(cspace, dsc, sRSName, sCategories, sValues)用来将一个Chart绑定到数据源
cspace:OWC.Chart的实例
dsc:数据源
sRSName:纪录集称号
sCategories,sValues:Chart中每一个系列的称号字段和响应的值的字段名(说的好象不是很清晰,不外看看代码你就分明了)
在利用办事器真个OWC时,实践上和利用其它的组件没甚么区分,都是用server.createobject来创立一个实例,再挪用组件的办法和属性。
OWC包含四个组件,他们的ProgID分离为:
OWC.Chart:图表组件
OWC.SpreadSheet:电子表格组件
OWC.DataSourceControl:数据源组件
OWC.PivotTable:静态报表组件
最初说一下若何处置一时的图片文件
在ExportChartToGIF汉书中你可以看到以下的代码:
Session("TC:" & sFilePath & sFileName) = sFilePath & sFileName
咱们将发生的图片文件途径保留在session中,然后在Session_OnEnd中添加以下的代码:
Set fsoTemp = CreateObject("Scripting.FileSystemObject")
for each imagefile in Session.Contents
if left(imagefile,3) = "TC:" then
fsoTemp.DeleteFile mid(imagefile,4), True
end if
next
set fsoTemp=nothing
好了。终究写完了,个中关于一时文件的处置的办法或许不是很好,假如你有更好的办法的话,请告知我。但愿这篇文章对人人都所匡助:)
</p> 使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。 |
|