首页 > 代码库 > windows form中将服务器端的文件保存到客户端

windows form中将服务器端的文件保存到客户端

      开发中常常遇到这样的问题:需要将服务器端的文件下载到客户端。这种情况分为两种,一种是windows环境,一种是web环境。前两天在winform开发中就遇到过这样一个问题,上网搜索后没有发现现成的demo,所以自己花费了一点时间,做了一个简单的文件保存的demo,分享如下:

     首先需要写一个下载的方法,将其抽象为一个静态类,以方便调用,如下:

    

public static class FileHelper    {        /// <summary>        /// 下载服务器文件至客户端,Create By Wangjianhui        /// </summary>        /// <param name="URL">被下载的文件地址,绝对路径</param>        /// <param name="DirFilePath">另存放的目录</param>        public static void DownloadFileToLocal(string URL, string DirFilePath,out string errorMeesage)        {            WebClient client = new WebClient();            string fileName = URL.Substring(URL.LastIndexOf("\\") + 1);  //被下载的文件名            //string Path = Dir + fileName;   //另存为的绝对路径+文件名            try            {                WebRequest myre = WebRequest.Create(URL);                errorMeesage = String.Empty;            }            catch (Exception e1)            {                errorMeesage = e1.Message;                //MessageBox.Show(e1.Message, "Error");            }            try            {                client.DownloadFile(URL, DirFilePath);                errorMeesage = String.Empty;            }            catch (Exception e2)            {                errorMeesage = e2.Message;                //MessageBox.Show(e2.Message, "Error");            }        }    }

现在遇到一个难点,就是保存的路径不能写死,而是由客户自己指定,由此很自然的想到了SaveFileDialog控件,在Form窗体中添加一个SaveFileDialog控件,保存按钮的代码如下:

     private void btnSave_Click(object sender, EventArgs e)        {             string sourceFile="E:\\FileFolder\\123.fff";            System.IO.FileInfo f = new System.IO.FileInfo(sourceFile);            string sourceFileName = f.Name;//原文件名称            string dirFilePath = string.Empty;            saveFileDialogForFFF.FileName = sourceFileName;            saveFileDialogForFFF.Filter = "电子书文件(.fff)|*.fff";            if (saveFileDialogForFFF.ShowDialog() == DialogResult.OK)            {                dirFilePath = saveFileDialogForFFF.FileName;            }           string errorMessage = string.Empty;           FileHelper.DownloadFileToLocal(sourceFile, dirFilePath, out errorMessage);           if (!string.IsNullOrEmpty(errorMessage))           {               MessageBox.Show(errorMessage);           }           else           {               MessageBox.Show("The file has been saved successfully");           }                }

当打开SaveFileDialog控件时,文件名称的文本框中默认为原文件名称,也可以手动改写为其它名称,通过导向选择要保存的路径,点击确定按钮,服务器端的文件就会被保存到客户端相应的路径下!