DSOFramer控件文档上传到服务器处理页面后,怎么解析数据
在http://www.cppblog.com/wanhhf/archive/2006/02/20/3355.html下载了DSOFramer控件,按照上面的说法将文件 post到UpLoadFile.aspx页面,不知道怎么解析出来
//初始化Http引擎
document.all.FramerControl1.HttpInit();
//增加Post变量
document.all.FramerControl1.HttpAddPostString("RecordID","20060102200);
document.all.FramerControl1.HttpAddPostString("UserID","李局长");
//上传打开的文件
document.all.FramerControl1.HttpAddPostCurrFile("FileData", "文档名.doc");
//执行上传动作
document.all.FramerControl1.HttpPost("http://xxxx.com/uploadfile.aspx");
我是按照最笨的办法解析出来了,但是应该有更好的方法,看一下我的代码
Default.aspx部分
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebOfficetitle>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<SCRIPT language="javascript" event="NotifyCtrlReady" for="FramerControl1">
OpenWebDoc()
SCRIPT>
<script language="javascript">
function NewDoc(){
//document.all.FramerControl1.CreateNew("Word.Document");//Word
//document.all.FramerControl1.CreateNew("PowerPoint.Show");//PowerPoint
//document.all.FramerControl1.CreateNew("Excel.Sheet");//Excel.Sheet
document.all.FramerControl1.CreateNew("Excel.Chart");//Excel.Chart
//document.all.FramerControl1.CreateNew("Visio.Drawing");//Visio
}
function OpenDoc(){
document.all.FramerControl1.showdialog(1)
}
function OpenWebDoc(){
document.all.FramerControl1.Open("Http://localhost/WebOffice/DocumentTemplate/Apply.doc", true);
}
function SaveToLocal(){
document.all.FramerControl1.Save("c:\\1.doc",true);
}
function SaveToWeb(){
document.all.FramerControl1.HttpInit();
document.all.FramerControl1.HttpAddPostString("RecordID","200601022")
document.all.FramerControl1.HttpAddPostString("UserID","李局长")
document.all.FramerControl1.HttpAddPostCurrFile("FileData", "bbb.doc")
document.all.FramerControl1.HttpPost("http://localhost/WebOffice/SaveDoc.aspx")
}
function Track(){
document.all.FramerControl1.SetTrackRevisions(1)
}
function UnTrack(){
document.all.FramerControl1.SetTrackRevisions(0)
document.all.FramerControl1.SetTrackRevisions(4)
}
function ShowTrack(){
document.all.FramerControl1.ShowRevisions(1)
document.all.FramerControl1.ShowView(5)
}
script>
HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" encType="multipart/form-data" runat="server">
<TABLE id="Table1" height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
<TR>
<TD vAlign="top" align="center" width="100">
<TABLE id="Table2" cellSpacing="0" cellPadding="3" width="80" border="0">
<TR>
<TD><INPUT language="javascript" style="WIDTH: 80px" οnclick="NewDoc()" type="button" value="New">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" οnclick="OpenDoc()" type="button" value="Open">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" οnclick="OpenWebDoc()" type="button" value="OpenWeb">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" οnclick="SaveToLocal()" type="button" value="SaveToLocal">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" οnclick="SaveToWeb()" type="button" value="SaveToWeb">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" type="button" value="Track" οnclick="Track()">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" type="button" value="UnTrack" οnclick="UnTrack()">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" type="button" value="ShowTrack" οnclick="ShowTrack()">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" type="button" value="Print">TD>
TR>
<TR>
<TD><INPUT style="WIDTH: 80px" type="button" value="Close">TD>
TR>
TABLE>
TD>
<TD>
<OBJECT id="FramerControl1" codeBase="dsoframer.ocx" height="100%" width="99%" classid="clsid:00460182-9E5E-11D5-B7C8-B8269041DD57"
VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="16960">
<PARAM NAME="_ExtentY" VALUE="13600">
<PARAM NAME="BorderColor" VALUE="-2147483632">
<PARAM NAME="BackColor" VALUE="-2147483643">
<PARAM NAME="ForeColor" VALUE="-2147483640">
<PARAM NAME="TitlebarColor" VALUE="-2147483635">
<PARAM NAME="TitlebarTextColor" VALUE="-2147483634">
<PARAM NAME="BorderStyle" VALUE="1">
<PARAM NAME="Titlebar" VALUE="0">
<PARAM NAME="Toolbars" VALUE="1">
<PARAM NAME="Menubar" VALUE="1">
OBJECT>
TD>
TR>
TABLE>
form>
body>
HTML>
Default.aspx.cs部分
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebOffice
{
///
/// Default 的摘要说明。
///
public class _Default : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e) {
Response.Redirect("SaveDoc.aspx");
}
}
}
接收文件的SaveDoc.aspx页面
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>SaveDoc</< SPAN>title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</< SPAN>HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server" encType="multipart/form-data">
</< SPAN>form>
</< SPAN>body>
</< SPAN>HTML>
SaveDoc.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
namespace WebOffice {
///
/// SaveDoc 的摘要说明。
///
public class SaveDoc : System.Web.UI.Page {
readonly int enterCount = 12;
string[] requestValues = new string[2];
private void Page_Load(object sender, System.EventArgs e) {
string newFile = Server.MapPath(".")+"\\Document\\" + DateTime.Now.ToFileTime().ToString() + "NewDoc.doc";
FileStream newDoc = new FileStream(newFile,FileMode.Create,FileAccess.Write);
BinaryReader br = new BinaryReader(Request.InputStream);
BinaryWriter bw = new BinaryWriter(newDoc);
br.BaseStream.Seek(0,SeekOrigin.Begin);
bw.BaseStream.Seek(0,SeekOrigin.End);
int enterNo = 0;
int streamHeadLen = 0;
while(br.BaseStream.Position < br.BaseStream.Length) {
streamHeadLen ++;
char c = (char)br.ReadByte();
if(enterNo < enterCount){
if(c == '\n'){
enterNo ++;
}
}
else{
break;
}
}
br.BaseStream.Seek(0,SeekOrigin.Begin);
string strTemp = System.Text.UTF8Encoding.Default.GetString(br.ReadBytes(streamHeadLen - 1));
while(br.BaseStream.Position < br.BaseStream.Length - 38) {
bw.Write(br.ReadByte());
}
br.Close();
bw.Flush();
bw.Close();
string[] requestStrings = {"RecordID","UserID"};
for(int i=0;i<requestStrings.Length;i++){
string str = "Content-Disposition: form-data; name=\""+requestStrings +"\"\r\n\r\n";
int index = strTemp.IndexOf(str) + str.Length;
if( index != str.Length - 1){
for(int j=index;j<strTemp.Length;j++){
if(strTemp[j] != '\r')
this.requestValues += strTemp[j];
else
break;
}
}
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e) {
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent() {
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}