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

      

     

        

  • 相关阅读:
    netty入门
    zookeeper安装
    nginx
    链式调用方法的实现原理和方法
    UI设计篇·入门篇·简单动画的实现,为布局设置动画,用XML布置布局动画
    UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法
    UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转
    XML文档的生成和解析操作方法
    ListView的基本使用方法和RecyclerView的基本使用方法
    Fragment的粗浅理解
  • 原文地址:https://www.cnblogs.com/wangjianhui008/p/3798962.html
Copyright © 2011-2022 走看看