Как загрузить файл в каталог не по умолчанию, используя FTPWEBREQUEST? - PullRequest
1 голос
/ 20 июля 2011

Я сталкиваюсь с проблемой при попытке загрузить файл в нестандартный каталог на сервере.

Когда я использую «ftp: //server01/autofile/test.zip», файл загружается без каких-либо проблем, так как автофайл является каталогом по умолчанию.

Но когда я использую приведенный ниже код, я получаю исключение, которое говорит: «Удаленный сервер возвратил ошибку: (550) Файл недоступен (например, файл не найден, нет доступа).». Ниже показан фрагмент кода, который я использую.

string inputfilepath = "E:\\Test\\test.ZIP";
string ftpfullpath = "ftp://server01/../bcp/ftp/ftpsftiu/test.ZIP";
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
ftp.Method = WebRequestMethods.Ftp.UploadFile;
ftp.Credentials = new NetworkCredential("Username", "password");
ftp.UsePassive = true;
ftp.KeepAlive = true;
ftp.UseBinary = true;
FileStream fs = File.OpenRead(inputfilepath);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream reqStream = ftp.GetRequestStream();

Но я могу открыть вышеуказанный путь к каталогу, который не указан по умолчанию (ftp: //server01/../bcp/ftp/ftpsftiu/test.ZIP) с помощью команды «Выполнить» в Windows.

Как мне загрузить свой файл в этот нестандартный каталог на сервере с помощью кода C #? пожалуйста, помогите мне исправить это.

Заранее спасибо !!!

С уважением, Shadu

1 Ответ

1 голос
/ 23 июля 2011

Это сработало для меня, если я поставил еще одну косую черту после сервера (// сервер //).Я (также) полностью уточнил имя выходного пути.Статический GetCread () - это вызов метода в доморощенный класс.

Пример:

static void Main(string[] args)
  {
     string strSystem = "MAPS";
     FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + strSystem +"//export/home/hinest/science/trans/fred.txt");
     req.Credentials = CGetCred.GetCred(strSystem);
     req.Method = WebRequestMethods.Ftp.UploadFile;
     FtpWebResponse resp = (FtpWebResponse)req.GetResponse();
     StreamWriter fileOut = new StreamWriter(req.GetRequestStream());
     StreamReader fileIn = new StreamReader(@"c:\science\"+strSystem+".txt");
     while (!fileIn.EndOfStream)
     {
        fileOut.WriteLine(fileIn.ReadLine());
     }
     fileIn.Close();
     fileOut.Close();
     resp.Close();
  }
...