C# ftp только для записи
Следующий код выдаст исключение при попытке подключиться к ftp "только для записи"
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftp://...);
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.UploadFile;
Stream ftpstream = request.GetRequestStream();
GetRequestStream() генерирует исключение "отказано в разрешении", поскольку платформа реализует команды FTP следующим образом: - open - user - pwd
Пожалуйста, помогите?
1 ответ
Проверьте эту тему.
Также, чтобы избежать PWD за кулисами, вы можете использовать FTP-клиент.Net, например, edtFtpNet, например:
var ftp = new FTPClient();
ftp.BytesTransferred += new BytesTransferredHandler((o, e) => { Console.WriteLine("Remote Path: " + e.RemotePath + ", Remote File: " + e.RemoteFile + ", Bytes transfered: " + e.ByteCount); });
ftp.TransferStartedEx += new TransferHandler((o, e) => { Console.WriteLine("FTP Transfer started!"); });
ftp.TransferCompleteEx += new TransferHandler((o, e) => { Console.WriteLine("FTP Transfer completed!"); });
try
{
ftp.RemoteHost = FTP_HOST;
ftp.ConnectMode = FTPConnectMode.ACTIVE;
ftp.Timeout = 120000;
ftp.Connect();
ftp.Login(FTP_USER, FTP_PWD);
ftp.TransferType = FTPTransferType.BINARY;
ftp.Put(GetBytes("file contents go here!"), Guid.NewGuid().ToString() + ".txt");
}
catch (Exception e)
{
Console.WriteLine("Error:" + e.ToString());
}
finally
{
ftp.Quit();
Console.WriteLine("FTP Quit!");
}