日期:2014-05-18  浏览次数:21387 次

向大家请教,FTP上传文件:远程服务器返回错误: (550) 文件不可用
private static string ftpServerIP = "192.168.0.95";
  private static string ftpUserID = "Administrator";
  private static string ftpPassword = "trw2007";

  static void Main(string[] args)
  {
  Upload(@"E:\TEMP\ftpUpload.txt");
  }

  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)
  {
  throw ex;
  }
  }

  同样差不多的代码实现FTP下载没有问题,但是一上传文件就在 Stream strm = reqFTP.GetRequestStream(); 这一句抛出异常。不解,向大家请教。

------解决方案--------------------
是不是本地文件夹的权限不够
------解决方案--------------------
在文件夹属性中的安全选项中,把Everyone用户给所有权限
------解决方案--------------------
说明地址有错误,看看目录存不存在, 是不是你的帐户虽然有上传文件的权限,但是没有建立目录的权限?

------解决方案--------------------
抛出的什么异常?
------解决方案--------------------