FTP上传函数如下,可以确定代码无错internal bool Upload(string fileName, string uploadUrl,string UserName,string Password){//fileName上傳的檔案ex : c:\abc.xml , uploadUrl上傳的FTP伺服器路徑ftp://127.0.0.1,UserName使用者FTP登入帳號 , Password使用者登入密碼Stream requestStream = null;    FileStream fileStream = null;    FtpWebResponse uploadResponse = null;    try    {        FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl);        uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;//設定Method上傳檔案        uploadRequest.Proxy = null;        if (UserName.Length > 0)//如果需要帳號登入        {            NetworkCredential nc = new NetworkCredential(UserName, Password);            uploadRequest.Credentials = nc; //設定帳號        }        requestStream = uploadRequest.GetRequestStream();        fileStream = File.Open(fileName, FileMode.Open);        byte[] buffer = new byte[1024];        int bytesRead;        while (true)        {//開始上傳資料流            bytesRead = fileStream.Read(buffer, 0, buffer.Length);            if (bytesRead == 0)            break;            requestStream.Write(buffer, 0, bytesRead);        }        requestStream.Close();        uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();        return true;    }    catch (Exception ex)    {        throw new Exception(ex.Message);    }    finally    {        if (uploadResponse != null)        uploadResponse.Close();        if (fileStream != null)        fileStream.Close();        if (requestStream != null)        requestStream.Close();    }}现有一FTP服务器IP:127.0.0.1 用户名:admin 密码:admin 要实现上传功能该如何?我帖出我的代码,请大家帮忙指正        private void button_Click(object sender, EventArgs e)
        {
           Stream myStream;
           OpenFileDialog openFileDialog1 = new OpenFileDialog();            openFileDialog1.InitialDirectory = "C:\\";
            openFileDialog1.Filter = "xls files (*.xls)|*.xls|doc files (*.doc)|*.doc";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;            if ((myStream = openFileDialog1.OpenFile()) != null)
            {                Upload(openFileDialog1.FileName, "ftp://127.0.0.1", "admin", "admin");
                myStream.Close();
            }
        }

解决方案 »

  1.   

    提示什么问题
    http://topic.csdn.net/u/20091028/13/7f6dc7cd-d0c0-4f40-9356-790acb7c4a01.html
      

  2.   

    调试到upload函数的
    throw new Exception(ex.Message);
    这里会提示“请求的URI对此FTP命令无效”
    难道是我格式错了?
      

  3.   

    Upload(openFileDialog1.FileName, "ftp://127.0.0.1/1.xls", "admin", "admin");调用的URI路径不对,你要上传,但是没有指定上传到FTP上生成哪个文件,当然不行.
    这个是将你上传的内容写到1.xls中.
      

  4.   

    谢谢xingyuebuyu,URI错误的问题解决了
    不过还是没实现上传,会提示"文件被另外进程使用中",但是当前没有进程在使用该文件
    这是为何?
      

  5.   

    if ((myStream = openFileDialog1.OpenFile()) != null)
    {Upload(openFileDialog1.FileName, "ftp://127.0.0.1", "admin", "admin");
    myStream.Close();
    }你这是想判断文件是否存在吧?改成下面这样
    if ((myStream = openFileDialog1.OpenFile()) != null)
    {
    //因为你已经打开了文件流,但是又没有关闭,Upload方法中又重新去打开,才会出现问题的
    myStream.Close();
    Upload(openFileDialog1.FileName, "ftp://127.0.0.1", "admin", "admin");}
      

  6.   

    谢谢,xingyuebuyu所言,由于stream流的原因,这个流在上传文件中没用到,我把它删除了,上传实现了