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 de athrarn
1
1
athrarn, - Sistemas Operativos : - MS-DOS, Windows 3
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...