using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using DBstep;
namespace DigitalSignature.WebOffice
{
public partial class OfficeServer : System.Web.UI.Page
{
private iMsgServer2000 msgServer = null ; //服务器端weboffice控件
private const string _FilePath = @"Document\" ;
private const string _signatureFilePath = @"Signature\" ;
private string mMarkList = "KenshinCui" ;
private byte [] mFileBody = null ; //签章信息
private string mOption;
private string mRecordID;
private string mTemplate;
private string mFileName;
private string mFileType;
private string mHtmlName;
private string mDirectory;
private string mLabelName;
private string mImageName;
private string mCommand;
protected void Page_Load( object sender, EventArgs e)
{
string mFilePath;
string TemplateFilePath;
msgServer = new iMsgServer2000();
string currentPath = "." ;
msgServer.MsgVariant(Request.BinaryRead(Request.ContentLength));
mFilePath = ConfigurationManager.AppSettings[ "TempFile" ]; //取得文档的存放路径
TemplateFilePath = ConfigurationManager.AppSettings[ "Template" ]; //取得存放模版文件的路径
if (mFilePath + "" == "" )
{
mFilePath = Server.MapPath( "/" ) +_FilePath;
}
currentPath = mFilePath;
string n = msgServer.GetMsgByName( "DBSTEP" );
if (n.Equals( "DBSTEP" ))
{
mOption = msgServer.GetMsgByName( "OPTION" );
if (mOption.Equals( "LOADFILE" )) //请求调用文档
{
mRecordID = msgServer.GetMsgByName( "RECORDID" ); //取得文档编号
mFileName = msgServer.GetMsgByName( "FILENAME" ); //取得文档名称
mFileType = msgServer.GetMsgByName( "FILETYPE" ); //取得文档类型
mFilePath = mFilePath + mFileName; //取得文档完整路径和名称
if (!Path.HasExtension(mFilePath))
{
mFilePath += mFileType;
}
msgServer.MsgTextClear();
if (msgServer.MsgFileLoad(mFilePath)) //调入文档
{
msgServer.SetMsgByName( "STATUS" , "打开成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "打开失败!" ); //设置错误信息
}
}
else if (mOption.Equals( "SAVEFILE" )) //请求保存文档
{
mRecordID = msgServer.GetMsgByName( "RECORDID" ); //取得文档编号
mFileName = msgServer.GetMsgByName( "FILENAME" ); //取得文档名称
mFileType = msgServer.GetMsgByName( "FILETYPE" ); //取得文档类型
mFilePath = mFilePath + mFileName; //取得文档完整路径和名称
if (!Path.HasExtension(mFilePath))
{
mFilePath += mFileType;
}
msgServer.MsgTextClear();
if (msgServer.MsgFileSave(mFilePath)) //保存文档内容
{
msgServer.SetMsgByName( "STATUS" , "保存成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "保存失败!" + mFileName); //设置错误信息
}
msgServer.MsgFileClear();
}
else if (mOption.Equals( "LOADTEMPLATE" )) //请求调用模板文档
{
mTemplate = msgServer.GetMsgByName( "TEMPLATE" ); //取得文档编号
mFileType = msgServer.GetMsgByName( "FILETYPE" ); //取得文档类型
mFilePath = currentPath;
mCommand = msgServer.GetMsgByName( "COMMAND" );
if (mCommand.Equals( "INSERTFILE" ))
{
msgServer.MsgTextClear();
if (msgServer.MsgFileLoad(mFilePath + mTemplate)) //调入模板文档
{
msgServer.SetMsgByName( "STATUS" , "打开模板成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "打开模板失败!" ); //设置错误信息
}
}
else
{
mFilePath = TemplateFilePath + mTemplate + mFileType; //取得文档完整路径和名称
File.SetAttributes(mFilePath, FileAttributes.Normal);
msgServer.MsgTextClear();
if (msgServer.MsgFileLoad(mFilePath)) //调入模板文档
{
msgServer.SetMsgByName( "STATUS" , "打开模板成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "打开模板失败!" ); //设置错误信息
}
File.SetAttributes(mFilePath, FileAttributes.ReadOnly | FileAttributes.Archive | FileAttributes.Compressed);
}
}
else if (mOption.Equals( "SAVETEMPLATE" )) //请求保存模板文档
{
mTemplate = msgServer.GetMsgByName( "TEMPLATE" ); //取得文档编号
mFileType = msgServer.GetMsgByName( "FILETYPE" ); //取得文档类型
mFilePath = TemplateFilePath + mTemplate + mFileType; //取得文档完整路径和名称
File.SetAttributes(mFilePath, FileAttributes.Normal);
msgServer.MsgTextClear();
if (msgServer.MsgFileSave(mFilePath)) //调入模板文档
{
msgServer.SetMsgByName( "STATUS" , "保存模板成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "保存模板失败!" ); //设置错误信息
}
File.SetAttributes(mFilePath, FileAttributes.ReadOnly | FileAttributes.Archive | FileAttributes.Compressed);
}
else if (mOption.Equals( "UPDATEFILE" )) //请求保存文档
{
mRecordID = msgServer.GetMsgByName( "RECORDID" ); //取得文档编号
mFileName = msgServer.GetMsgByName( "FILENAME" ); //取得文档名称
mFileType = msgServer.GetMsgByName( "FILETYPE" ); //取得文档类型
mFilePath = mFilePath + mFileName; //取得文档完整路径和名称
msgServer.MsgTextClear();
if (msgServer.MsgFileSave(mFilePath)) //保存文档内容
{
msgServer.SetMsgByName( "STATUS" , "保存成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "保存失败!" ); //设置错误信息
}
msgServer.MsgFileClear();
}
else if (mOption.Equals( "INSERTFILE" )) //请求调用正文文档
{
mRecordID = msgServer.GetMsgByName( "RECORDID" ); //取得文档编号
mFileName = msgServer.GetMsgByName( "FILENAME" ); //取得文档名称
mFileType = msgServer.GetMsgByName( "FILETYPE" ); //取得文档类型
mFilePath = mFilePath + mFileName; //取得文档完整路径和名称
msgServer.MsgTextClear();
if (msgServer.MsgFileLoad(mFilePath)) //调入文档
{
msgServer.SetMsgByName( "STATUS" , "插入文件成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "插入文件失败!" ); //设置错误信息
}
}
else if (mOption.Equals( "INSERTIMAGE" )) //请求调用正文文档
{
mFilePath = currentPath;
mRecordID = msgServer.GetMsgByName( "RECORDID" ); //取得文档编号
mLabelName = msgServer.GetMsgByName( "LABLENAME" ); //标签名
mImageName = msgServer.GetMsgByName( "IMAGENAME" ); //图片名
mFilePath = mFilePath + mImageName; //图片在服务器的完整路径
mFileType = mImageName.Substring(mImageName.Length - 4, 4).ToLower(); //取得文件的类型
msgServer.MsgTextClear();
if (msgServer.MsgFileLoad(mFilePath)) //调入图片
{
msgServer.SetMsgByName( "IMAGETYPE" , mFileType); //指定图片的类型
msgServer.SetMsgByName( "POSITION" , mLabelName); //设置插入的位置[书签对象名]
msgServer.SetMsgByName( "STATUS" , "插入图片成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "插入图片失败!" ); //设置错误信息
}
}
else if (mOption.Equals( "SAVEASHTML" ))
{
mFilePath = currentPath;
mHtmlName = msgServer.GetMsgByName( "HTMLNAME" ); //取得标签文档内容
mDirectory = msgServer.GetMsgByName( "DIRECTORY" ); //取得标签文档内容
msgServer.MsgTextClear();
if (mDirectory.Equals( "" ))
{
mFilePath = mFilePath + "\\HTML" ;
}
else
{
mFilePath = mFilePath + "\\HTML\\" + mDirectory;
}
msgServer.MakeDirectory(mFilePath);
if (msgServer.MsgFileSave(mFilePath + "\\" + mHtmlName))
{
string txt = msgServer.MsgTextBody();
byte [] biteBody = GetFileBody(mFilePath + "\\" + mHtmlName);
Encoding encode = Encoding.GetEncoding( "gb2312" );
string html = encode.GetString(biteBody);
msgServer.MsgError( "" ); //清除错误信息
msgServer.SetMsgByName( "STATUS" , "保存成功" ); //设置状态信息
}
else
{
msgServer.MsgError( "保存失败" + mFilePath + "\\" + mHtmlName); //设置错误信息
}
msgServer.MsgFileClear();
}
else if (mOption.Equals( "SAVEIMAGE" ))
{
mFilePath = currentPath;
mHtmlName = msgServer.GetMsgByName( "HTMLNAME" ); //取得标签文档内容
mDirectory = msgServer.GetMsgByName( "DIRECTORY" ); //取得标签文档内容
msgServer.MsgTextClear();
if (mDirectory.Equals( "" ))
{
mFilePath = mFilePath + "\\HTMLIMAGE" ;
}
else
{
mFilePath = mFilePath + "\\HTMLIMAGE\\" + mDirectory;
}
msgServer.MakeDirectory(mFilePath);
if (msgServer.MsgFileSave(mFilePath + "\\" + mHtmlName))
{
msgServer.MsgError( "" ); //清除错误信息
msgServer.SetMsgByName( "STATUS" , "保存成功" ); //设置状态信息
}
else
{
msgServer.MsgError( "保存失败" ); //设置错误信息
}
msgServer.MsgFileClear();
}
else if (mOption.Equals( "LOADMARKLIST" )) //获取电子印章列表
{
if (LoadMarkList())
{ //获得列表信息mMarkList
msgServer.SetMsgByName( "MARKLIST" , mMarkList); //显示签章列表(多个之间用换行符\r分割)
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "创建印章列表失败!" ); //设置错误信息
}
}
else if (mOption.Equals( "LOADMARKIMAGE" )) //打开印章文件
{
string mMarkName = msgServer.GetMsgByName( "IMAGENAME" ); //取得签名名称
string mUserName = msgServer.GetMsgByName( "USERNAME" ); //取得用户名称
string mPassword = msgServer.GetMsgByName( "PASSWORD" ); //取得用户密码
msgServer.MsgTextClear(); //清除文本信息
if (LoadMarkImage(mMarkName, mPassword))
{
//调入签名信息mFileBody
//msgServer.SetMsgByName("IMAGETYPE", mFileType); //设置签名类型
msgServer.SetMsgByName( "IMAGETYPE" , ".jpg" ); //设置签名类型
msgServer.MsgFileBody(mFileBody); //将签名信息打包
msgServer.SetMsgByName( "POSITION" , "Manager" ); //设置插入位置
msgServer.SetMsgByName( "STATUS" , "打开成功!" ); //设置状态信息
msgServer.MsgError( "" ); //清除错误信息
}
else
{
msgServer.MsgError( "签名或密码错误!" ); //设置错误信息
}
}
else if (mOption.Equals( "SAVESIGNATURE" )) //保存签章信息
{
//mRecordID = msgServer.GetMsgByName("RECORDID"); //取得文档编号
//mFileName = msgServer.GetMsgByName("FILENAME"); //取得文件名称
//mMarkName = msgServer.GetMsgByName("MARKNAME"); //取得签名名称
//mUserName = msgServer.GetMsgByName("USERNAME"); //取得用户名称
//mDateTime = msgServer.GetMsgByName("DATETIME"); //取得签名时间
//mHostName = Request.getRemoteAddr(); //取得用户IP
//mMarkGuid = msgServer.GetMsgByName("MARKGUID"); //取得唯一编号
//msgServer.MsgTextClear(); //清除文本信息
//if (SaveSignature())
//{ //保存签章信息进数据库
// msgServer.SetMsgByName("STATUS", "保存印章成功!"); //设置状态信息
// msgServer.MsgError(""); //清除错误信息
//}
//else
//{
// msgServer.MsgError("保存印章失败!"); //设置错误信息
//}
}
}
else
{
msgServer.MsgError( "Error:packet message" );
msgServer.MsgTextClear();
msgServer.MsgFileClear();
}
Response.BinaryWrite(msgServer.MsgVariant());
Response.End();
}
private bool LoadMarkImage( string mMarkName, object mPassword)
{
if (Signature.HasRight(Session[ "userName" ]+ "" ,mPassword.ToString()))
{
string picPath = Server.MapPath( "/" ) + _signatureFilePath + mMarkName + ".jpg" ;
mFileBody = File.ReadAllBytes(picPath);
return true ;
}
else
{
return false ;
}
}
private bool LoadMarkList()
{
string tMarkList = Signature.GetMaskList(); //印章列表
if (tMarkList + "" != string .Empty)
{
mMarkList = tMarkList;
return true ;
}
else
{
return false ;
}
}
private byte [] GetFileBody( string strFullFileName)
{
byte [] file = new byte [0];
FileInfo fInfo = new FileInfo(strFullFileName);
if (fInfo.Exists == true )
{
if ((fInfo.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
File.SetAttributes(strFullFileName, FileAttributes.Archive);
}
}
file = new byte [fInfo.Length];
FileStream fs = new FileStream(strFullFileName, FileMode.Open);
fs.Read(file, 0, ( int )fInfo.Length);
fs.Close();
return file;
}
}
}
|