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

      

     

        

  • 相关阅读:
    PHP-配置方法
    正则表达式-基础使用整理
    SEO-长尾词与分词技术
    SEO-站外优化规范
    SEO-站内优化规范
    SEO-友情链接注意事项
    java netty之ServerBootstrap的启动
    [curator] Netflix Curator 使用
    Netty5.x中新增和值得注意的点
    带连接池的netty客户端核心功能实现剖解
  • 原文地址:https://www.cnblogs.com/wangjianhui008/p/3798962.html
Copyright © 2020-2023  润新知