Проблема с загрузкой файлов по FTP - PullRequest
0 голосов
/ 06 января 2011

Я работаю над приложением Windows с c # .net.Я использую класс FTPwebrequest для загрузки файла на ftp.it отлично работает, когда нет прокси между приложением и интернетом.но он не работает в прокси.

FtpWebRequest reqFTP;, если я использую reqFTP.Proxy=new webproxy("proxyservername",21);, то будет отображаться сообщение об ошибке «Команда FTP не поддерживает HTTP прокси».

мой кодэто так

FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create("ftp://uri");

reqFTP.Credentials = new NetworkCredential("username", "pwd");

reqFTP.KeepAlive = false;

reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.UsePassive = true;
int buffLength = 2048;

byte[] buff = new byte[buffLength];
int contentLen;

FileStream fs = fileInf.OpenRead();

Stream strm = reqFTP.GetRequestStream();

contentLen = fs.Read(buff, 0, buffLength);

while (contentLen != 0)
{
    strm.Write(buff, 0, contentLen);
    contentLen = fs.Read(buff, 0, buffLength);
    prbUpload.Value += contentLen;
}

strm.Close();
fs.Close();

Ответы [ 3 ]

1 голос
/ 06 января 2011

Из документации по FtpWebRequest.Proxy :

Если указанный прокси является прокси HTTP, только команды DownloadFile, ListDirectory и ListDirectoryDetailsподдерживаются.

Таким образом, вы не можете использовать FtpWebRequest для загрузки файла через FTP через HTTP-прокси.Другие решения могут быть доступны, см. этот вопрос , в котором обсуждается та же проблема.

0 голосов
/ 31 декабря 2015

Будь то uploadFile, DownloadFile, ListDirectory или ListDirectoryDetails. Следующий код решает все проблемы.

reqFTP.Proxy = new WebProxy();

Он инициализирует Proxy для пустого экземпляра класса WebProxy, который внутренне пропускает прокси.

0 голосов
/ 06 января 2011

Вы используете HTTP прокси. Может быть, вы используете этот прокси для просмотра Интернета. Вы не можете использовать http прокси для FTP. Чтобы использовать этот прокси для ftp, вам необходимо настроить прокси-сервер для ftp.

Суть в том, что ftp-прокси требуется для ftp, http-прокси требуется для просмотра и т. Д.

Итак, вы отправляете команды ftp через прокси, но этот прокси поддерживает только http. Итак, я думаю, что сообщение об ошибке теперь более значимо для вас

" Команда FTP не поддерживается в HTTP-прокси "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...