Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: VB.net - как скачать файл с ftp-сервера (с указ... Добавлено: 06.06.03 21:40  

Автор вопроса:  Gr | Web-сайт: www.vbnet.ru

Доброго времени суток!

Как в VB.net скачать файл с ftp-сервера с указанием имени пользователя и пароля. Если есть какой-нибудь бесплатный компонент для VB.net/6, желательно со свойством сколько процентов скачано.

P.S. из тех вариантов что были предложены по этому вопросу на этом форуме мне подошел один вариант (бесплатный ocx FTPClient, но там нету свойства сколько % скачано).

Спасибо!

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Alex



Вопросов: 0
Ответов: 3
 Профиль | | #1 Добавлено: 11.08.09 13:55
http://www.example-code.com/vbdotnet/ftp.asp

Ответить

Номер ответа: 2
Автор ответа:
 Alex



Вопросов: 0
Ответов: 3
 Профиль | | #2 Добавлено: 11.08.09 16:46
Загрузка на фтп:
  1. Public Sub Upload(ByVal filename As String)
  2.  
  3.         Dim ftpServerIP As String = "80.90.100.110"
  4.         Dim ftpUserID As String = "login"
  5.         Dim ftpPassword As String = "password"
  6.         Dim fileInf As New IO.FileInfo(filename)
  7.         Dim uri As String = "ftp://" + ftpServerIP + "/" + fileInf.Name
  8.         Dim reqFTP As System.Net.FtpWebRequest
  9.  
  10.         ' Create FtpWebRequest object from the Uri provided
  11.  
  12.         reqFTP = System.Net.FtpWebRequest.Create(New Uri(uri))
  13.  
  14.         ' Provide the WebPermission Credintials
  15.  
  16.         reqFTP.Credentials = New System.Net.NetworkCredential(ftpUserID, ftpPassword)
  17.  
  18.         ' By default KeepAlive is true, where the control connection is
  19.  
  20.         ' not closed after a command is executed.
  21.  
  22.         reqFTP.KeepAlive = False
  23.  
  24.         ' Specify the command to be executed.
  25.  
  26.         reqFTP.Method = System.Net.WebRequestMethods.Ftp.UploadFile
  27.  
  28.         ' Specify the data transfer type.
  29.  
  30.         reqFTP.UseBinary = True
  31.  
  32.         ' Notify the server about the size of the uploaded file
  33.  
  34.         reqFTP.ContentLength = fileInf.Length
  35.  
  36.         ' The buffer size is set to 2kb
  37.  
  38.         Dim buffLength As Integer = 2048
  39.         Dim buff(buffLength) As Byte
  40.         Dim contentLen As Integer
  41.  
  42.         ' Opens a file stream (System.IO.FileStream) to read the file to be uploaded
  43.         Dim fs As IO.FileStream = fileInf.OpenRead()
  44.         Try
  45.  
  46.             ' Stream to which the file to be upload is written
  47.  
  48.             Dim strm As IO.Stream = reqFTP.GetRequestStream()
  49.  
  50.             ' Read from the file stream 2kb at a time
  51.  
  52.             contentLen = fs.Read(buff, 0, buffLength)
  53.  
  54.             ' Till Stream content ends
  55.  
  56.             While contentLen <> 0
  57.                 ' Write Content from the file stream to the
  58.  
  59.                 ' FTP Upload Stream
  60.                 strm.Write(buff, 0, contentLen)
  61.                 contentLen = fs.Read(buff, 0, buffLength)
  62.             End While
  63.  
  64.             ' Close the file stream and the Request Stream
  65.  
  66.             strm.Close()
  67.             fs.Close()
  68.         Catch ex As Exception
  69.             MessageBox.Show(ex.Message, "Upload Error")
  70.         End Try
  71.     End Sub


Процент загрузки здесь сделать, думаю, не сложно.

Ответить

Номер ответа: 3
Автор ответа:
 Alex



Вопросов: 0
Ответов: 3
 Профиль | | #3 Добавлено: 11.08.09 16:48
Загрузка с фтп (на C#, но переделывается аналогично как я переделал вариант выше):
  1. private void Download(string filePath, string fileName)
  2. {
  3.     FtpWebRequest reqFTP;
  4.     try
  5.     {
  6.         //filePath = <<The full path where the
  7.  
  8.         //file is to be created. the>>,
  9.  
  10.         //fileName = <<Name of the file to be createdNeed not
  11.  
  12.         //name on FTP server. name name()>>
  13.  
  14.         FileStream outputStream = new FileStream(filePath +
  15.                                 "\\" + fileName, FileMode.Create);
  16.  
  17.         reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" +
  18.  
  19.                                 ftpServerIP + "/" + fileName));
  20.         reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
  21.         reqFTP.UseBinary = true;
  22.         reqFTP.Credentials = new NetworkCredential(ftpUserID,
  23.                                                     ftpPassword);
  24.         FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  25.         Stream ftpStream = response.GetResponseStream();
  26.         long cl = response.ContentLength;
  27.         int bufferSize = 2048;
  28.         int readCount;
  29.         byte[] buffer = new byte;
  30.  
  31.         readCount = ftpStream.Read(buffer, 0, bufferSize);
  32.         while (readCount > 0)
  33.         {
  34.             outputStream.Write(buffer, 0, readCount);
  35.             readCount = ftpStream.Read(buffer, 0, bufferSize);
  36.         }
  37.  
  38.         ftpStream.Close();
  39.         outputStream.Close();
  40.         response.Close();
  41.     }
  42.     catch (Exception ex)
  43.     {
  44.         MessageBox.Show(ex.Message);
  45.     }
  46. }

Ответить

Номер ответа: 4
Автор ответа:
 semenoff



ICQ: 636686656 

Вопросов: 0
Ответов: 3
 Профиль | | #4 Добавлено: 20.04.11 14:48
Небольшая ошибочка в коде.
Вместо
  1.         
  2.         int bufferSize = 2048;
  3.         int readCount;
  4.         byte[] buffer = new byte;


должно быть

Ответить

Номер ответа: 5
Автор ответа:
 semenoff



ICQ: 636686656 

Вопросов: 0
Ответов: 3
 Профиль | | #5 Добавлено: 20.04.11 14:48
  1.       
  2.         int bufferSize = 2048;
  3.         int readCount;
  4.         byte[] buffer = new byte;



С уважением :)

Ответить

Номер ответа: 6
Автор ответа:
 semenoff



ICQ: 636686656 

Вопросов: 0
Ответов: 3
 Профиль | | #6 Добавлено: 20.04.11 14:50
  1.         
  2.         int bufferSize = 2048;
  3.         int readCount;
  4.         byte[] buffer = new byte[bufferSize];



Пардоньте, клавиатура глючит...

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 21.04.11 15:55
  1.             WebClient client = new WebClient
  2.                                    {
  3.                                        Credentials = new NetworkCredential("user", "password")
  4.                                    };
  5.             byte[] data = client.DownloadData(@"ftp://mysite.com:12456/myfile.jpg");


ня?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам