gastao Posted February 18, 2016 at 12:03 PM Report Share #593645 Posted February 18, 2016 at 12:03 PM Boas alguém me consegue ajudar como a apagar dados de um FTP de um tipo por exemplo *.zip com uma data por exemplo superior a 5 dias. Outro ponto também preciso de fazer download de um ficheiro mas isso eu penso que seja fácil fazer e a enciclopedia google deve ter alguns exemplos, mas queria descompacta lo por exemplo e msm substituindo ficheiros se eles forem iguais Link to comment Share on other sites More sharing options...
gastao Posted August 27, 2016 at 10:55 AM Author Report Share #598422 Posted August 27, 2016 at 10:55 AM apagar ficheiro com data superior a 5 dias dentro de um ftp Link to comment Share on other sites More sharing options...
gastao Posted August 30, 2016 at 08:21 PM Author Report Share #598526 Posted August 30, 2016 at 08:21 PM tou a colocar o seguinte codigo e nao me apaga nada no ftp alguem me consegue dar uma ajuda sff Dim FTPRequest As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://127.0.0.1/*.zip"), System.Net.FtpWebRequest) FTPRequest.Credentials = New System.Net.NetworkCredential("username", "password") FTPRequest.Method = System.Net.WebRequestMethods.Ftp.DeleteFile Link to comment Share on other sites More sharing options...
apocsantos Posted August 31, 2016 at 01:10 AM Report Share #598529 Posted August 31, 2016 at 01:10 AM Boa noite, Creio que por esse caminho não seja assim tão fácil de conseguir. Cheguei a experimentar e optei por comprar um componente para o fazer, para não estar a perder tempo a escrever um cliente FTP para executar comandos FTP no servidor. De qualquer das formas fica aqui um exemplo de um cliente FTP: 'Baseado em codigo de um livro' Imports System.Net.Sockets Private Function enviaCommando (_ ipAddress As String, ipPort As Integer, _ ftpUser As String, ftpPassword As String, _ CommandoDeFTP as String) As Boolean enviaCommando = False Try Dim tcpClient As New TcpClient() tcpClient.Connect(ipAddress, ipPort) Flush(tcpClient) 'limpa a porcaria do welcome do servidor' Dim response As String = transmiteCommando(tcpClient, "utilizador " & ftpUser) If response.IndexOf("331") >= 0 Then response = transmiteCommando(tcpClient, "password " & ftpPassword) If response.IndexOf("230") >= 0 Then response = transmiteCommando(tcpClient, CommandoDeFTP) If response.IndexOf("200") >= 0 Then enviaCommando = True End If End If End If tcpClient.Close() Catch ex As Exception MsgBox("Erro: " & ex.Message) End Try End Function Private Function transmiteCommando(ByVal tcpClient As TcpClient, ByVal cmd As String) As String transmiteCommando = "" Try Dim networkStream As System.Net.Sockets.NetworkStream = tcpClient.GetStream() If networkStream.CanWrite And networkStream.CanRead Then Dim sendBytes As [Byte]() = System.Text.Encoding.ASCII.GetBytes(cmd & vbCrLf) networkStream.Write(sendBytes, 0, sendBytes.Length) Dim oReader As New System.IO.StreamReader(networkStream) transmiteCommando = oReader.ReadLine() End If Catch ex As Exception MsgBox("Erro: " & ex.Message) End Try End Function Private Sub Flush(ByVal tcpClient As TcpClient) Try Dim networkStream As System.Net.Sockets.NetworkStream = tcpClient.GetStream() If networkStream.CanWrite And networkStream.CanRead Then Dim recvBytes(tcpClient.ReceiveBufferSize) As Byte networkStream.ReadTimeout = 10000 networkStream.Read(recvBytes, 0, CInt(tcpClient.ReceiveBufferSize)) Dim returnData As String = System.Text.Encoding.ASCII.GetString(recvBytes) End If Catch ex As Exception End Try End Sub private sub apagaZips() Try enviaCommando ("127.0.0.1", 20, "utilizador", "password", "rm -rf *.zip") Catch ex As Exeption End Sub Cordiais cumprimentos, Apocsantos 1 Report "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito" Link to comment Share on other sites More sharing options...
gastao Posted August 31, 2016 at 09:53 AM Author Report Share #598532 Posted August 31, 2016 at 09:53 AM (edited) 8 horas atrás, apocsantos disse: Boa noite, Creio que por esse caminho não seja assim tão fácil de conseguir. Cheguei a experimentar e optei por comprar um componente para o fazer, para não estar a perder tempo a escrever um cliente FTP para executar comandos FTP no servidor. De qualquer das formas fica aqui um exemplo de um cliente FTP: 'Baseado em codigo de um livro' Imports System.Net.Sockets Private Function enviaCommando (_ ipAddress As String, ipPort As Integer, _ ftpUser As String, ftpPassword As String, _ CommandoDeFTP as String) As Boolean enviaCommando = False Try Dim tcpClient As New TcpClient() tcpClient.Connect(ipAddress, ipPort) Flush(tcpClient) 'limpa a porcaria do welcome do servidor' Dim response As String = transmiteCommando(tcpClient, "utilizador " & ftpUser) If response.IndexOf("331") >= 0 Then response = transmiteCommando(tcpClient, "password " & ftpPassword) If response.IndexOf("230") >= 0 Then response = transmiteCommando(tcpClient, CommandoDeFTP) If response.IndexOf("200") >= 0 Then enviaCommando = True End If End If End If tcpClient.Close() Catch ex As Exception MsgBox("Erro: " & ex.Message) End Try End Function Private Function transmiteCommando(ByVal tcpClient As TcpClient, ByVal cmd As String) As String transmiteCommando = "" Try Dim networkStream As System.Net.Sockets.NetworkStream = tcpClient.GetStream() If networkStream.CanWrite And networkStream.CanRead Then Dim sendBytes As [Byte]() = System.Text.Encoding.ASCII.GetBytes(cmd & vbCrLf) networkStream.Write(sendBytes, 0, sendBytes.Length) Dim oReader As New System.IO.StreamReader(networkStream) transmiteCommando = oReader.ReadLine() End If Catch ex As Exception MsgBox("Erro: " & ex.Message) End Try End Function Private Sub Flush(ByVal tcpClient As TcpClient) Try Dim networkStream As System.Net.Sockets.NetworkStream = tcpClient.GetStream() If networkStream.CanWrite And networkStream.CanRead Then Dim recvBytes(tcpClient.ReceiveBufferSize) As Byte networkStream.ReadTimeout = 10000 networkStream.Read(recvBytes, 0, CInt(tcpClient.ReceiveBufferSize)) Dim returnData As String = System.Text.Encoding.ASCII.GetString(recvBytes) End If Catch ex As Exception End Try End Sub private sub apagaZips() Try enviaCommando ("127.0.0.1", 20, "utilizador", "password", "rm -rf *.zip") Catch ex As Exeption End Sub Cordiais cumprimentos, Apocsantos eu para enviar para o ftp fiz algo muito simples que até esta a funcionar 'Fazer upload para o FTP do ficheiro desejado Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://" & nameftp & "/" + Date.Today.ToLongDateString + " file.zip"), System.Net.FtpWebRequest) request.Credentials = New System.Net.NetworkCredential("" & userftp & "", "" & passwordftp & "") request.Method = System.Net.WebRequestMethods.Ftp.UploadFile Dim file() As Byte = System.IO.File.ReadAllBytes("" & caminho & "\" + Date.Today.ToLongDateString + " file.zip") Dim strz As System.IO.Stream = request.GetRequestStream() strz.Write(file, 0, file.Length) strz.Close() strz.Dispose() AutoCloseMsgBox("Ficheiro enviado para o FTP", "teste", 5) Edited August 31, 2016 at 09:54 AM by gastao Link to comment Share on other sites More sharing options...
apocsantos Posted August 31, 2016 at 10:07 AM Report Share #598533 Posted August 31, 2016 at 10:07 AM Bom dia, Para fazer upload, sim também tinha seguido esse caminho, mas para remover ficheiros, por exemplo, não fica assim tão simples. De qualquer das formas as rotinas criadas dão para todos os comandos possíveis num FTP, uma vez que é um FTP client. Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito" Link to comment Share on other sites More sharing options...
gastao Posted August 31, 2016 at 10:35 AM Author Report Share #598534 Posted August 31, 2016 at 10:35 AM vou experimentar o que mostras te a ver se funciona. obg na mesma abraço Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now