Ir para conteúdo
Fórum Script Brasil
  • 0

Upload ftp vb6


Luiz Tibo

Pergunta

Bom dia!

Sou novo aqui no forum...

Dei uma pesquisada já na net e pelo forum também. Mas não conseguí resolver meu problema.

Tem pouco tempo que to mechendo com o VB. E to precisando urgente resolver um problema aqui e não to conseguindo.

É o seguinte, tenho um codigo já meio que pronto aqui que serve para fazer Download/Upload de um arquivo em um servidor FTP.

O codigo para fazer download funciona beleza, porém o de upload não estou conseguindo.

Já tentei com INET mas não ta dando. Mas a fução que tenho de download aqui não usa o inet. Peguei alguns códigos para upload mas não consegui fazer funcionar.

Aqui está o código de DOWNLOAD(que funciona):

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Dim lngRetVal As Long
-------------------------------------------------------------------------------------------
Private Function DownloadFile(URL As String, LocalFileName As String) As Boolean
lngRetVal = URLDownloadToFile(0, URL, LocalFileName, 0, 0)
If lngRetVal = 0 Then
   DownloadFile = True
   MsgBox "O downloada foi realizado com sucessso !"
Else
   MsgBox "Ocorreu um erro durante a conexão. "
End If
End Function
Aqui está o codigo de UPLOAD(que não funciona):
Private Declare Function FtpPutFile Lib "WinInet" Alias "FtpPutFileA" (ByVal hFtp As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Long

Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long

Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Long, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long

Dim Upload As Boolean
-------------------------------------------------------------------------------------------
Private Function UploadFile(LocalFileName As String, RemoteFileName As String) As Long
conectahost
Upload = FtpPutFile(hconnect, LocalFileName, RemoteFileName, 1, 0)

If Upload = False Then
    MsgBox "The call to FtpPutFile failed."
End If
End Function
-------------------------------------------------------------------------------------------
Private Sub conectahost()
hopen = InternetOpen("MyFTPControl", 1, vbNullString, vbNullString, 0)
hconnect = InternetConnect(hopen, "ftp.exemplo.com.br", 21, "exemplo", "exemplo", 1, 0, 0)
End sub

Queria saber o que está errado, e o que eu poderia fazer, lembrando que a função de Download funciona e Upload não funciona.

Agradeço desde já.

Abraços.

Editado por quintelab
Adicionar tag CODE - kuroi; Removido Caixa Alta do título e descrição de urgente - quintelab
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

luiz, o q acontece de errado com esse codigo??

de qualquer forma, aqui tem um tutorial do macoratti com um codigo q funciona perfeito com inet: http://www.macoratti.net/vb_ftp1.htm

na verdade, parece q hj o site do macoratti ta fora do ar, pelo menos eu não to conseguindo abrir aqui. mas nesse tópico aqui, por acaso, eu upei esse mesmo tutorial do macoratti e você pode baxar o projeto funcionando no meu ultimo post do tópico: http://scriptbrasil.com.br/forum/index.php?showtopic=133005

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu Kuroi. já tinha dado uma olhada nesse site, e em outros lugares. Mas mesmo assim não to conseguindo fazer, e tipo to com pouco tempo pra fazer, =/. Voce não teria uma função ai de upload pronta não?

Tanto a parte para conectar e do upload.

Private sub Upload()
With Inet
        .Cancel
        .protocol = icFTP
        .RemoteHost = "ftp://exemplo.com.br"
        .UserName = "exemplo"
        .Password = "exemplo123"
    End With
Abraços.
Inet.Execute "ftp://exemplo.com.br/", "send /exemplo.com.br/teste.txt/ C:\teste\teste.txt"
End Sub Seria só isso? E o que seria o "nflag" nessa função?:
hconnect = InternetConnect(hopen, "ftp.teste.com.br", INTERNET_INVALID_PORT_NUMBER, _
        "teste", "123", INTERNET_SERVICE_FTP, nFlag, 0)

Help me hehe

Editado por Luiz Tibo
Link para o comentário
Compartilhar em outros sites

  • 0

E depois que eu conseguise fazer isso, eu tenho que antes de fazer o upload verificar se já existe o diretorio onde eu vou salvar o arqauivo de texto, se já existir eu salvo, senao tenho que criar e depois salvar. Alguém ai tem um código que possa me ajudar ai?

Como posso verificar se o diretório existe? Usando função API. Nâo usei o Componente INET.

Mas ta dando certo a parte de enviar pro servidor. =]

Agora to precisando também de saber se usando essas funções, eu posso colocar uma barrinha de progresso do download/upload e verificar la se o diretorio existe, se existir ele substitui o arquivo dentro do diretorio, senao ele cria o diretorio e joga o arquivo la dentro, alguém ai pode me ajudar?

Agradeço desde já.

Abraços.

Editado por Luiz Tibo
Link para o comentário
Compartilhar em outros sites

  • 0

o flag são opcoes q podem ser passadas pra funcao InternetConnect(). pra saber quais são os valores pra cada opcao, teria q olhar a documentacao da api q ele deve listar as constantes. no site do msdn deve ter.

quanto as otras perguntas, eu nunca usei essas funcoes de api pra ftp, mas quando sobrar tempo eu posso tentar da uma pesquisada.

Link para o comentário
Compartilhar em outros sites

  • 0

O Kuroi, valeu mesmo =]. Se você puder dar uma olhada ai. Fico grato.

Queria uma função API ai para criar um diretório. Caso ele ainda não exista.

Se mais alguém ai puder ajudar =]

Valeu ai!

--------------------------------------------

Queria também saber como eu posso colocar uma barra de progresso usando essas APIs Pra função de Upload.

Tipo eu pegaria o tamanho do arquivo e a velocidade que a net estária trasferindo os arquivos e ai faria o calculo do tempo que falta. E usaria o tempo para fazer o progressbar.

Como poderia fazer isso?

Editado por Luiz Tibo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...