1、C#C#基于互联网开发公文传输之经验基于互联网开发公文传输之经验 安国有 王淑妍【摘 要】基于 VS2012 编程工具,通过 C#语言有效利用 FtpWebRequest 与DosFramer 控件开发实用的互联网公文编写与传输工具。【Abstract】Based on VS2012 programming tools,this paper makes effective use of FtpWebRequest and DosFramer control in C#language to develop practical internet document writing and tran
2、smission tools.【关键词】C#;互联网开发;VS2012;公文编写与传输【Keywords】C#;internet development;VS2012;document writing and transmission【中图分类号】TP311 【文献标志码】A 【文章编号】1673-1069(2020)09-0118-02 1 引言 随着信息技术不断发展与普及应用,单位信息技术管理人员的技术水平不断提升,其为单位量身开发应用软件之意愿越发强烈,结合多年的工作经验,现将“基于互联网络环境”,利用 C#语言,有效利用 FtpWebRequest 与 DosFramer控件,开发公文
3、编写与传输的经验加以总结,供同行及程序开发爱好者借鉴。2 开发与运行环境构建 FTP 服务器环境:基于 Windows 7.0,基于 Internet 信息服务(IIS)管理器,添加 FTP 站点,依据对话框,设置站点名称(MyFTP)、内容目录(D:MyFile)、IP 地址(127.0.0.1)等,其中 SSL 选择,选择“无”,“身份验证”选择“基本”,授权“允许访问”选择“指定用户”,并填写已建的用户(用户名:user001,密码:123),“权限”选择“读取”和“写入”。FTP 公文目录规划。FTP 服务器内容目录(D:MyFile)下建立 Template 和WandTDocume
4、nt 文件夹。3 开发环境构建 第一,下载安装 Microsoft Visual Studio 2012(以下简称 VS2012)。第二,下载 DosFramer.ocx 控件,如果控件为 32 位,拷贝到 System32,否则拷贝到 SysWOW64 文件夹,并对其进行注册。第三,利用 Word 2010 创建公文模板(MyTemplate.docx),存于 FTP 服务器的Template 文件夹内。4 主要功能方法的实现 利用 VS2012 创建 WandTDocument 项目,通过工具箱建选项卡,添加doframer.ocx。在 Form1 窗体放置:两个 button 控件和一个
5、 DSO Framer Control Object 控件,设置 button1 的 Text 为“公文编写”,button2 的 Text 為“公文发送”,axFramerControl1 的 Name 为 MyEdit。在 WandTDocument 项目的输出路径(binDebug)下建立 Document 文件夹。方法定义。在 Form1 空间引用处输入:using System.IO;using System.Net;定义窗体级对象与变量,如下:private FtpWebRequest MyFTP;private string LocalFileName;private strin
6、g LocalPath=Application.StartupPath+Document;最后定义如下方法,实现调用公文模板编写公文,并发送公文,具体如下:private void Connect(String path)/连接 FTP 服务器 MyFTP=(FtpWebRequest)FtpWebRequest.Create(new Uri(path);MyFTP.UseBinary=true;MyFTP.Credentials=new NetworkCredential(user001,123);public bool SendFile(string filename)FileInfo f
7、ileIno=new FileInfo(filename);string url=ftp:/127.0.0.1/WandTDocument/+fileIno.Name;ConFtp(url);MyFTP.KeepAlive=false;MyFTP.Method=WebRequestMethods.Ftp.UploadFile;MyFTP.ContentLength=fileIno.Length;int bufLng=2048;byte buf=new bytebufLng;int contLng;FileStream fs=fileIno.OpenRead();try Stream strm=
8、MyFTP.GetRequestStream();contLng=fs.Read(buf,0,bufLng);while(contLng!=0)strm.Write(buf,0,contLng);contLng=fs.Read(buf,0,bufLng);strm.Close();fs.Close();return true;catch(Exception ex)return false;public bool WriteFile(string fileName)try string localpath=Application.StartupPath+Document;string local
9、FName=localpath+fileName;string url=ftp:/127.0.0.1/Template/template.docx;ConFtp(url);MyFTP.Credentials=new NetworkCredential(user001,123);FtpWebResponse Rpe=(FtpWebResponse)MyFTP.GetResponse();Stream ftpStm=Rpe.GetResponseStream();long cl=Rpe.ContentLength;int buflng=2048;int readsl;byte buf=new by
10、tebuflng;readsl=ftpStm.Read(buf,0,buflng);FileStream outStm=new FileStream(localFName,FileMode.Create);while(readsl0)outStm.Write(buf,0,readsl);readsl=ftpStm.Read(buf,0,buflng);ftpStm.Close();outStm.Close();Rpe.Close();return true;catch(Exception ex)return false;private string GetFileName()string fi
11、lename=DateTime.Now.ToString(yyyy/MM/dd HH:mm:ss fff);filename=filename.Replace(-,).Replace(/,).Replace(,).Replace(:,)+.docx;return filename;5 基本功能調用 private void button1_Click(object sender,EventArgs e)LocalFileName=GetFileName();if(WriteFile(LocalFileName)MyEdit.Open(LocalPath+LocalFileName);else MessageBox.Show(调取公文模板失败!);private void button2_Click(object sender,EventArgs e)string localfile=LocalPath+LocalFileName;if(!SendFile(localfile)MessageBox.Show(公文发送失败!);