以下程序在.NET2005,系统XP中测试通过: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.IO; namespace TQSystem.Com{ class UpDownLoadFile { ///<summary> /// WebClient上传文件至服务器(不带进度条) /// </summary> /// <paramname="fileNameFullPath">要上传的文件(全路径格式)</param> /// <paramname="strUrlDirPath">Web服务器文件夹路径</param> ///<returns>True/False是否上传成功</returns> public bool UpLoadFile(stringfileNameFullPath, string strUrlDirPath) { //得到要上传的文件文件名 string fileName =fileNameFullPath.Substring(fileNameFullPath.LastIndexOf("\\") 1); //新文件名由年月日时分秒及毫秒组成 string NewFileName = DateTime.Now.ToString("yyyyMMddhhmmss") DateTime.Now.Millisecond.ToString() fileNameFullPath.Substring(fileNameFullPath.LastIndexOf(".")); //得到文件扩展名 string fileNameExt =fileName.Substring(fileName.LastIndexOf(".") 1); if (strUrlDirPath.EndsWith("/") == false) strUrlDirPath =strUrlDirPath "/"; //保存在服务器上时,将文件改名(示业务需要) strUrlDirPath = strUrlDirPath NewFileName; // 创建WebClient实例 WebClient myWebClient = new WebClient(); myWebClient.Credentials = CredentialCache.DefaultCredentials; // 将要上传的文件打开读进文件流 FileStream myFileStream = new FileStream(fileNameFullPath, FileMode.Open,FileAccess.Read); BinaryReader myBinaryReader = new BinaryReader(myFileStream); try { byte[] postArray = myBinaryReader.ReadBytes((int)myFileStream.Length); //打开远程Web地址,将文件流写入 Stream postStream = myWebClient.OpenWrite(strUrlDirPath, "PUT"); if (postStream.CanWrite) { postStream.Write(postArray, 0, postArray.Length); } else { //MessageBox.Show("Web服务器文件目前不可写入,请检查Web服务器目录权限设置!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } postStream.Close();//关闭流 return true; } catch (Exceptionexp) { //MessageBox.Show("文件上传失败:" exp.Message,"系统提示", MessageBoxButtons.OK,MessageBoxIcon.Information); return false; } } ///<summary> /// 下载服务器文件至客户端(不带进度条) ///</summary> /// <paramname="strUrlFilePath">要下载的Web服务器上的文件地址(全路径 如:http://www.dzbsoft.com/test.rar)</param> /// <paramname="Dir">下载到的目录(存放位置,机地机器文件夹)</param> ///<returns>True/False是否上传成功</returns> public boolDownLoadFile(string strUrlFilePath, string strLocalDirPath) { // 创建WebClient实例 WebClient client = new WebClient(); //被下载的文件名 string fileName = strUrlFilePath.Substring(strUrlFilePath.LastIndexOf("/")); //另存为的绝对路径+文件名 string Path = strLocalDirPath fileName; try { WebRequest myWebRequest = WebRequest.Create(strUrlFilePath); } catch (Exception exp) { MessageBox.Show("文件下载失败:" exp.Message,"系统提示", MessageBoxButtons.OK,MessageBoxIcon.Information); } try { client.DownloadFile(strUrlFilePath, Path); return true; } catch (Exception exp) { MessageBox.Show("文件下载失败:" exp.Message,"系统提示", MessageBoxButtons.OK,MessageBoxIcon.Information); return false; } } ///<summary> /// 下载带进度条代码(普通进度条) ///</summary> /// <param name="URL">网址</param> /// <paramname="Filename">文件名</param> /// <paramname="Prog">普通进度条ProgressBar</param> ///<returns>True/False是否下载成功</returns> public boolDownLoadFile(string URL, string Filename, ProgressBar Prog) { try { System.Net.HttpWebRequest Myrq =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL); //从URL地址得到一个WEB请求 System.Net.HttpWebResponse myrp =(System.Net.HttpWebResponse)Myrq.GetResponse(); //从WEB请求得到WEB响应 long totalBytes = myrp.ContentLength; //从WEB响应得到总字节数 Prog.Maximum = (int)totalBytes; //从总字节数得到进度条的最大值 System.IO.Stream st = myrp.GetResponseStream(); //从WEB请求创建流(读) System.IO.Stream so = new System.IO.FileStream(Filename,System.IO.FileMode.Create); //创建文件流(写) long totalDownloadedByte = 0; //下载文件大小 byte[] by = new byte[1024]; int osize = st.Read(by, 0, (int)by.Length); //读流 while (osize > 0) { totalDownloadedByte= osize totalDownloadedByte; //更新文件大小 Application.DoEvents(); so.Write(by, 0, osize); //写流 Prog.Value = (int)totalDownloadedByte; //更新进度条 osize = st.Read(by, 0,(int)by.Length); //读流 } so.Close(); //关闭流 st.Close(); //关闭流 return true; } catch { return false; } } ///<summary> /// 下载带进度条代码(状态栏式进度条) ///</summary> /// <param name="URL">网址</param> /// <paramname="Filename">文件名</param> /// <paramname="Prog">状态栏式进度条ToolStripProgressBar</param> ///<returns>True/False是否下载成功</returns> public boolDownLoadFile(string URL, string Filename, ToolStripProgressBar Prog) { try { System.Net.HttpWebRequest Myrq =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL); //从URL地址得到一个WEB请求 System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();//从WEB请求得到WEB响应 long totalBytes = myrp.ContentLength; //从WEB响应得到总字节数 Prog.Maximum= (int)totalBytes; //从总字节数得到进度条的最大值 System.IO.Stream st = myrp.GetResponseStream(); //从WEB请求创建流(读) System.IO.Stream so = new System.IO.FileStream(Filename,System.IO.FileMode.Create); //创建文件流(写) long totalDownloadedByte = 0; //下载文件大小 byte[] by = new byte[1024]; int osize = st.Read(by, 0, (int)by.Length); //读流 while (osize > 0) { totalDownloadedByte = osize totalDownloadedByte; //更新文件大小 Application.DoEvents(); so.Write(by, 0, osize); //写流 Prog.Value = (int)totalDownloadedByte; //更新进度条 osize = st.Read(by, 0, (int)by.Length); //读流 } so.Close(); //关闭流 st.Close(); //关闭流 return true; } catch { return false; } } }}
下载Winfrom上传下载文件用户还喜欢
- 18480 文章数
- 500万+ 热度
作者专栏
编辑推荐
- 淡抹u2引擎,修复内容较多,物有所值
- 界域传说·经典巨作=传世单机(一键安装)
- 丸子版本(175个传世版本大集合)
- GS版本:神话公益服务端+客户端
- 图片放大工具(放大图片不模糊)
- 剪映无限制VIP版
- 传奇世界客户端下载器,史上最全传世客户端
- 传世GS20220920商业引擎注册+登录配置器 解压密码是1
- U2官方排行榜游戏网关 支持元神,支持传家宝
- GS开战传世客户端+服务端
- (淡漠夕阳)u2引擎合区工具
- 传世GS引擎消除“你的游戏客户端版本号过旧,请及时更新”提示
- 传世一机多区双线路配置器--免密码版本
- 传世凤凰登陆器劫持修复软件
- SQLite3 for Navicat
- 传奇世界npc对话框编辑工具
- 传世GS落霞铭文服务器端
- gs_20210409引擎包+注册机(无限制)
- 传奇世界NPC对话封包查看器[支持时长版和极速版]
- 彩虹引擎传世脚本编辑工具1.7版来了,支持函数脚本翻译
评论