Subir archivos al servidor con vb

Estoy haciendo un programa bajo visual basic para llevar el mantenimiento de los contenidos de una página web que se almacenan en una base de datos sql server.
Necesitaría que me echases un mano porque no se como hacer para subir archivos a una carpeta específica de mi servidor web en internet.
Te agradecería enormemente que me pasases algún código o lugar en el que poder consultarlo ya que llevo relativamente poco tiempo programando.

1 respuesta

Respuesta
1
Necesito que me des más datos : ¿El servidor Web esta en la misma maquina que el ejecutable destino? En ese caso, ¿sabes cuál es el directorio destino de la maquina? Si el servidor es una máquina en la misma lan, normalmente lo más sencillo es usar una ruta UNC para ir al destino (algo del tipo ://127.0.0.1/c$/tal/cual)En caso de que sea un servidor remoto y la conexión la tengas que hacer por ftp o ssh entonces la tarea es un poco más pesada. Además, si lo que generas es código Java, probablemente tengas que tirar y volver a levantar el servidor desde tu programa de Visual Basic, dado que habitualmente los códigos se cargan en Caché. Si es simple código html, simplemente actualizar la página sirve. En cualquier caso, si me aclaras esto podré responderte la pregunta.
Hasta entonces.
El servidor es de mi proveedor de sitio web (el que me cobra por el espacio y el dominio) y lo que intento es subir una serie de fotos y documentos a una carpeta que yo mismo cree para que los visitantes de la página web puedan descargarlas. Pretendo hacer esto para a la vez que actualizo los enlaces (la página los carga de una base de datos) suba estos archivos para no tener que después utilizar un cliente de ftp para subirlos, ya que la página se actualiza muy a menudo.
Un saludo...
Te mando el fuente que uso yo de ejemplo de cliente FTP
Creo que a esto te refieres.
'**************************************
' Name: Upload a file to an FTP using Wi
' nsock
' Description:It Uploads a file to an FT
' P using Winsock
'
' Inputs:Two winsock controls (winsock1
' and Winsock2), a command button (command
' 1) and a labal (label1).
'
'**************************************
Dim Commun(5) As Com
Dim CommunState As Integer
Dim Site As String
Dim Username As String
Dim Password As String
Dim Remotefile As String
Dim Localfile As String
Dim Buffersize As Long
Dim CloseAfterSend As Boolean
Private Sub Command1_Click()
Site = ""
Username = ""
Password = ""
Localfile = "c:\windows\desktop\view.exe"
Remotefile = "/view.exe"
Commun(0).Reply = "220"
Commun(0).BackCommand = "USER " + Username
Commun(1).Reply = "331"
Commun(1).BackCommand = "PASS " + Password
Commun(2).Reply = "230"
Commun(2).BackCommand = "TYPE I"
Commun(3).Reply = "200"
Commun(3).BackCommand = "PORT"
Commun(4).Reply = "200"
Commun(4).BackCommand = "STOR " + Remotefile
Commun(5).Reply = ""
Commun(5).BackCommand = ""
Buffersize = 2920
Dim Nr1 As Integer
Dim Nr2 As Integer
Dim LocalIP As String
LocalIP = Winsock1.LocalIP
Do Until InStr(LocalIP, ".") = 0
LocalIP = Left(LocalIP, InStr(LocalIP, ".") - 1) + "," + Right(LocalIP, Len(LocalIP) - InStr(LocalIP, "."))
Loop
Randomize Timer
Nr1 = Int(Rnd * 12) + 5
Nr2 = Int(Rnd * 254) + 1
Commun(3).BackCommand = "PORT " + LocalIP + "," + Trim(Str(Nr1)) + "," + Trim(Str(Nr2))
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
Winsock2.LocalPort = (Nr1 * 256) + Nr2
Winsock2.Listen
Winsock1.Close
Do Until Winsock1.State = 0
DoEvents
Loop
Winsock1.RemoteHost = Site
Winsock1.RemotePort = 21
Winsock1.Connect
CommunState = 0
Do Until Winsock1.State = 7 Or Winsock1.State = 9
DoEvents
Loop
Select Case Winsock1.State
Case 9
MsgBox "Couldn't reach server " + Site + ".", vbOKOnly + vbInformation, "FTP Upper"
Case 7
Open Localfile For Binary As #1
End Select
End Sub
Private Sub Form_Load()
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim tmpS As String
Winsock1.GetData tmpS, , bytesTotal
Debug.Print tmpS;
Select Case Left(tmpS, 3)
Case Commun(CommunState).Reply
Winsock1.SendData Commun(CommunState).BackCommand + Chr(13) + Chr(10)
Debug.Print Commun(CommunState).BackCommand
CommunState = CommunState + 1
Case "150"
Do Until Winsock2.State = 7
DoEvents
Loop
SendNextData
Case "226"
Winsock1.Close
Do Until Winsock1.State = 0
DoEvents
Loop
MsgBox "Transfer complete.", vbOKOnly + vbInformation, "FTP Upper"
Case Else
MsgBox "Bad reply: " + Left(tmpS, Len(tmpS) - 2), vbOKOnly + vbInformation, "FTP Upper"
End Select
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
Winsock2.Accept requestID
Do Until Winsock2.State = 7
DoEvents
Loop
End Sub
Sub SendNextData()
Dim Take As Long
Dim Buffer As String
If LOF(1) - Seek(1) < Buffersize Then Take = LOF(1) - Seek(1) + 1 Else Take = Buffersize
Buffer = Input(Take, 1)
Winsock2.SendData Buffer
If Take < Buffersize Then
Close #1
CloseAfterSend = True
End If
On Error Resume Next
Label1 = Trim(Str(Seek(1))) + "/" + Trim(Str(LOF(1)))
On Error Goto 0
End Sub
Private Sub Winsock2_SendComplete()
If CloseAfterSend = True Then
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
CloseAfterSend = False
Else
SendNextData
End If
End Sub
Perdona a este pobre ignorante...
Pero al ejecutar tu código me da un error en "Dim Commun(5) As Com". El error me dice "No se ha definido el tipo definido por el usuario". ¿Podrías decirme que es Com, y como solucionar esto?
Gracias (... espero no darte mucho la lata)
Claro...
Type Com
Reply As String
BackCommand As String
End Type
¿A esto te refieres?
Perdón...
Mea Culpa, pensé que estaba en el código...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas