如题,

解决方案 »

  1.   

    用 .net 4 ftpWebRequest 作的上传工具FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create((uploadUrl));
    reqFTP.Credentials = new NetworkCredential(username, password);reqFTP.Timeout = 600000; //Set a time limit for the operation to complete.
    reqFTP.ReadWriteTimeout = 10000; //when reading or writing to a stream.
    reqFTP.KeepAlive = true;
    reqFTP.UseBinary = true stMethods.Ftp.UploadFile;
                                    const int bufferLength = 2048;
                    byte[] buffer = new byte[bufferLength];
                    count = 0;
                    int readBytes = 0;
                    FileStream fs = fi.OpenRead();
                    
                    Stream requestStream = reqFTP.GetRequestStream();
                    do
                    {
                        readBytes = fs.Read(buffer, 0, bufferLength);
                        requestStream.Write(buffer, 0, bufferLength);
                        count += readBytes;
                    }
                    while (readBytes != 0);                requestStream.Close();
                    fs.Close();                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                    response.Close(); 
      

  2.   

    requestStream.Write(buffer, 0, bufferLength);
    也就是即便你的文件小于const int bufferLength = 2048;字节,你也会写一个2048字节出去。估计是大在这里了吧。
    换成
    requestStream.Write(buffer, 0, readBytes);试试?
      

  3.   

    requestStream.Write(buffer, 0, bufferLength);
    有问题吧!每次都是写2048,应该是读多少写多少!!