using System.Net;
using System.IO;private void Upload(string filename)
{
    FileInfo fileInf = new FileInfo(filename);
    string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
    FtpWebRequest reqFTP;     // 根据uri创建FtpWebRequest对象 
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));     // ftp用户名和密码
    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);     // 默认为true,连接不会被关闭
    // 在一个命令之后被执行
    reqFTP.KeepAlive = false;     // 指定执行什么命令
    reqFTP.Method = WebRequestMethods.Ftp.UploadFile;     // 指定数据传输类型
    reqFTP.UseBinary = true;     // 上传文件时通知服务器文件的大小
    reqFTP.ContentLength = fileInf.Length;     // 缓冲大小设置为2kb
    int buffLength = 2048;    byte[] buff = new byte[buffLength];
    int contentLen;     // 打开一个文件流 (System.IO.FileStream) 去读上传的文件
    FileStream fs = fileInf.OpenRead(); 
    try
    {
        // 把上传的文件写入流
        Stream strm = reqFTP.GetRequestStream();         // 每次读文件流的2kb
        contentLen = fs.Read(buff, 0, buffLength);         // 流内容没有结束
        while (contentLen != 0)
        {
            // 把内容从file stream 写入 upload stream
            strm.Write(buff, 0, contentLen);            contentLen = fs.Read(buff, 0, buffLength);
        }         // 关闭两个流
        strm.Close();
        fs.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Upload Error");
    }
}以上代码确定能够使用..

解决方案 »

  1.   

    你的WelcomeMessage试下用数字或者字母看下是否正常,还有长度不要太长。。
    先判断下是中文问题还是长度问题
      

  2.   

    viki117 :  在英文的欢迎词下是正常的,能够很好的完成上传下载等操作
      

  3.   

    兄弟,我也碰到这个问题,2楼的方法是可以的,本机调试都没问题,可vs发布后,我拿到客户端运行下,发现上传不了。
    于是我在本地测试上传到服务器上去,结果出现类似的出错信息,兄弟,你解决了吗?解决的话,告诉我下噢。
    QQ :35516694 谢谢
      

  4.   

    的确是中文信息的问题,我找了一个FTP客户端的源码,把它更新了一下,把验证登陆和传输部分重写了,现在运行起来没有问题
      

  5.   

    zhenlogo:
    需要源码的话,可以把邮箱留下,我发给你源码