应该不是这个命令格式的问题,因为txt文件都可以正常下载回来了,我记得ftp有一个命令,应该是binary,可以把传送的数据设为2进制模式,并不是说把命令使用2进制编码后发送。

解决方案 »

  1.   

    建议你找个标准的FTP服务器测试一下
      

  2.   

    ftp是有二进制传输方式的,是把传送的数据设为2进制模式,这个如果使用flaxfxp这样的工具的话也可以看出都会有这个选项的
      

  3.   

    ftp
    >open ***.**.***.**
    >USER:****
    >PASSED:*******
    >binary (设置为2进制模式传输,否则会把<CR>翻译成<CR><LF>)
    >get test.rar
      

  4.   

    Unix 和 WINDOWS 的编码方式是相同的吗,他们一次性是否处理的数据位是相同长度?
    其中涉及了压缩算法和解压算法的问题,要先确立个转换的思路哟 ^_^
      

  5.   

    建议你找个标准的FTP服务器
    是不是通信协议不对
      

  6.   

    linux/unix的FTP默认为文本传输
    所有文本文件下载后的CR都会被增加换行符号变成CR+LF,这就导致文件被追加了内容无法打开
    上传会把CR+LF缩写变成CR
    所以一定要设置binary二进制传输方式
      

  7.   

    楼主试着把test.rar文件改为test.txt看看效果?(下到本地在改回来解压看看)
      

  8.   

    使用TCPClient.networkstream()是上传
      

  9.   

    bat很简单:
      REM   创建需要的变量,你修改成你自己的就可以了,这样你就不需要修改下面的代码了   
      set   xdir=c:\
      set   ftpip=10.0.6.24
      set   user=movie
      set   pass=movie
      set   updir=abc    
      set   filname=20070209.wmv
      REM   检测服务器是否有生成需要的文件
     
      if   not   exist   %xdir%%filname%   goto   :EOF
         open   %ftpip%   >   tmp.txt
         User %user% %pass%>>   tmp.txt     bin   >>   tmp.txt
         cd   %updir%   >>   tmp.txt
         lcd   %xdir%   >>   tmp.txt
         put   >>   tmp.txt
         %filnam%   >>   tmp.txt
         %filnam%   >>   tmp.txt
         bye   >>   tmp.txt
      ftp -n   -s:tmp.txt
      

  10.   

    老大,我看了你的文件FTPFactory.cs,里面有一个方法,     
    public void setBinaryMode(Boolean mode)
    设一下就行了啊.
      

  11.   

    下载文件前先确定它的传输连接模式:
    "TYPE I";//binary类型传输
    " TYPE A";//ASCII类型传输
      

  12.   

    可能是取得文件有问题!stream1 = client1.GetStream();
                byte[] buffer1 = new byte[FTPConnection.BLOCK_SIZE];
                int num2 = 0;
                bool flag1 = true;
                while (flag1)
                {
                    num2 = stream1.Read(buffer1, 0, buffer1.Length);
                    pStream.Write(buffer1, 0, num2);
                    if (num2 == 0)
                    {
                        flag1 = false;
                    }
                }
                pStream.Close();
                stream1.Close();
                client1.Close();
      

  13.   

    你先确定上传的压缩文件和你本机的文件是否大小相同clientSocket.Send(   cmdBytes,   cmdBytes.Length,   0);  这句我觉得与问题。send以后未必已经完全发送
      

  14.   

        private void sendCommand(String command)
        {
            if (this.verboseDebugging) Debug.WriteLine(command, "FtpClient ");        Byte[] cmdBytes = Encoding.Unicode.GetString((command + "\r\n ").ToCharArray());
            clientSocket.Send(cmdBytes, cmdBytes.Length, 0);
            this.readResponse();
        }