C# linux FTP client [客服端]

由于工作需要,做了一个C#的FTP 客户端,FTP服务端在linux服务器上面,测试了.NET 平台自带的FTP类,只是上传了的文件(图片或者html页面)不能通过浏览器浏览.
      一开始以为是编码的问题,但是通过linux 的VIM 编辑器打开也没有发现乱码的问题,所有可以排除是编码格式不对,因为统一采用的是二进制的传输和保持方式。
      后来以为是gif 图片在linux和windows 上处理方式不一样,通过查资料排除了这种可能性


      //=======================================================
    CompuServe公司制定的Gif 图像格式的全称是 'GraphicsInterchangeFormat' ,顾名思义,是为Internet上传输高质量的图像。它共有两个版本:gif87a 和gif89a。在Gif图像格式中,所有的数据都是以流的方式传送的,并且Gif 定义了许多分隔符把数据流分割成数据块。Gif数据块主要有以下几种:
     
• Gif 文件签名块:Gif图像的标识,包括Gif的签名标识和Gif文件格式的版本。
• 逻辑屏幕描述数据块:描述了逻辑屏幕的尺寸,包括以逻辑象素表示的逻辑屏幕的左上角坐标、长度和宽度。
• 全局调色板数据块;包括以RGB方式描述的全局调色板。
• 局部调色板数据块;包括以RGB方式描述的应用于局部某一帧的局部调色板。
• 图像描述块:包含以逻辑象素表示的此帧图象在逻辑屏幕上的左上角的位置及其长度和宽度。
• 光栅数据数据块;包括具体的图象数据,每一象素在调色板中的颜色索引。
• 数据流结束数据块;标志Gif数据流的结束
    在Gif89a版本中,还增加了
     
• 图像扩展控制数据块;对gif图像各帧的控制标志,包含了图象的扫描方式为顺序扫描或者交错扫描。
• 注释数据块;注释文本
• 文本数据块;包含了图像中的文字
• 应用程序自定义数据块;包含应用程序自己定义的数据。
     
    Gif图像最多可支持256色,在光栅数据数据块中,使用了LZW压缩算法对光栅数据进行压缩。在图像控制数据块中,还定义了gif 图像的扫描顺序是否是交错扫描,这样在网络传输速度比较慢的情况下,允许一幅gif图像可以先显示主要的部分,最后显示出全部。
     
对于gif图像的处理,我们需要编写解码器来处理不同的数据块,把它转换成方便应用程序处理的格式。解码器的编写十分复杂,但是linux 下已经有很多方便自由的处理库,libgif 就是其中的佼佼者。我们可以直接使用这些函数库。后面面,我们会介绍一下libgif 的使用。或者如果你有特殊的需要,你可以自己编写解码器,但是通常,没有什么必要。    

    //==========================================
  直到刚刚才弄明白,原来是上传的文件权限不够(r--rw--w-),如果将权限设置为最低(r--rw-rw-)即可。呵呵,问题解决了可以睡觉了!有时候问题就你最不经意的地方!
  今天在Silverlight群里面和大家一起探讨了一些问题,受益颇多。
  很想买一根内存条,现在2G的内存跑了Win7后就不能干啥的了,虚拟机用起来卡死了,如果开了VS 2008,VS 2010,SQL 2005 就崩溃了。连Dreamweaver CS3 开了都占30%左右的内存。
  

/// <summary>
        /// 图片浏览
        /// </summary>
        /// <param></param>
        /// <param></param>
        private void button3_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "打开(Open)";
            ofd.FileName = "";
            ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);//为了获取特定的系统文件夹,可以使用System.Environment类的静态方法GetFolderPath()。该方法接受一个Environment.SpecialFolder枚举,其中可以定义要返回路径的哪个系统目录
            ofd.Filter = "CSV文件(*.jpg)|*.jpg";
            ofd.ValidateNames = true;     //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名
            ofd.CheckFileExists = true; //验证路径有效性
            ofd.CheckPathExists = true; //验证文件有效性
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                filepath = ofd.FileName.Substring(0, ofd.FileName.Length - ofd.SafeFileName.Length - 1);
                filepath = filepath.Replace("/", @"\\");
                filename = ofd.SafeFileName;
                textBox4.Text = filepath + @"\" + filename;
            }
        }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wygszd.html