Título: Comprobar si un archivo en internet existe (SOLUCIONADO) Publicado por: Littl3 en 13 Mayo 2008, 20:35 pm Buenas, necesito descargar unos videos de internet desde vb, pero antes comprobar si existe tal video, si no existe, el programa lo intenta descargar con otro nombre, hasta ahora hacia la comprobacion intentando descargar el video de esta manera:
Código: Link = "www.videos/elvideo.wmv" Dim j As Long j = URLDownloadToFile(0, Link, _ "c:\video.wmv", 0, 0) If j = 0 Then 'El video existe Else 'El video no existe Pero el problema es que de esa manera si el video existe lo descarga... y yo no quiero descargarlo solo comprobar si existe, alguien sabe como hacerlo? gracias salu2 Título: Re: Comprobar si un archivo en internet existe Publicado por: el-brujo en 13 Mayo 2008, 20:39 pm Para comprobar una descarga se mira si el servidor web responde con un código 200 (ok, encontrado) o un 404 (no encontrado).
Título: Re: Comprobar si un archivo en internet existe Publicado por: Littl3 en 13 Mayo 2008, 21:02 pm Gracias, y cual es la sintaxis para que el servidor web me responda con 200 o 404?
salu2 Título: Re: Comprobar si un archivo en internet existe Publicado por: naderST en 13 Mayo 2008, 21:57 pm Pues si URLDownloadToFile no te retorna 0 esk no existe, mira ve este ejemplo
Código: Option Explicit 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 Private Sub Command1_Click() If Descargar("http://localhost/index.php", "C:\hola.php") = True Then MsgBox "Se descargo" Else MsgBox "el archivo no se encunetra" End If End Sub Private Function Descargar(URL, Destino) As Boolean Dim lRet As Long lRet = URLDownloadToFile(0, URL, Destino, 0, 0) If lRet = 0 Then Descargar = True Else Descargar = False End If End Function Título: Re: Comprobar si un archivo en internet existe Publicado por: Littl3 en 13 Mayo 2008, 22:04 pm ya ya si es de la manera que lo estoy comprobando ahora, pero la cosa esta en que no quiero tener que descargar el archivo, con ese metodo si el archivo existe se descarga, yo no quiero descargarlo solo comprobar si existe.
Título: Re: Comprobar si un archivo en internet existe Publicado por: Nork en 13 Mayo 2008, 22:35 pm Como dice el-brujo lo puedes hacer... envías una petición http ( la cabecera te la inventas) y si el servidor encuentra el vídeo te devolverá 200 si no 404.
Título: Re: Comprobar si un archivo en internet existe Publicado por: USUARIO_DE_SOFTWARE_LIBRE en 13 Mayo 2008, 22:37 pm ya ya si es de la manera que lo estoy comprobando ahora, pero la cosa esta en que no quiero tener que descargar el archivo, con ese metodo si el archivo existe se descarga, yo no quiero descargarlo solo comprobar si existe. Como te dijo el brujo.Podés hacer así: conectarte con winsock al servidor web y enviarle un comando así: Código: GET /archivo.php http/1.1 y como dijo el brujo, si te devuelve el estado 200 del protocolo HTTP, es porque el archivo se encontró sin ningún problema. Busca sobre el protocolo HTTP ;)HOST: www.elhacker.net saludos Título: Re: Comprobar si un archivo en internet existe Publicado por: naderST en 13 Mayo 2008, 23:05 pm Bueno prova con el control Inet de esta manera:
Código: Option Explicit Private Sub Command1_Click() Dim strHeader As String Inet1.OpenURL "http://www.google.co.ve/jojojojo.html" DoEvents strHeader = Mid(Split(Inet1.GetHeader, "HTTP/1.1")(1), 2, 3) If strHeader = "404" Then MsgBox "No existe" ElseIf strHeader = "200" Then MsgBox "Si existe" End If End Sub Título: Re: Comprobar si un archivo en internet existe Publicado por: Littl3 en 14 Mayo 2008, 01:24 am Hola, e comprobado tu metodo naderST y me tira el siguiente error:
No se puede completar la peticion. Señala la siguiente linea: Código: strHeader = Mid(Split(Inet1.GetHeader, "HTTP/1.1")(1), 2, 3) Probare de hacerlo con winsock pero nose bien bien como hacerlo, ire trasteando si teneis alguna pista se agradecera ;) salu2 Edito: Creo que ya encontrado la manera corregirme si me equivoco Código: Datos = Inet1.OpenURL("http://upload.wikimedia.org/wikipedia/commons/thumb/8/80/Symbol_OK.svg/600px-Symbol_OK.svg.png") Si datos esta vacio el archivo no existe, me equivoco? Título: Re: Comprobar si un archivo en internet existe Publicado por: naderST en 14 Mayo 2008, 01:44 am Si datos esta vacio el archivo no existe, me equivoco? Si, si esta vacío el archivo no existe, ese puede ser un metodo. Título: Re: Comprobar si un archivo en internet existe Publicado por: Littl3 en 14 Mayo 2008, 09:59 am oki mersi, problema solucionado ^^ salu2
Título: Re: Comprobar si un archivo en internet existe (SOLUCIONADO) Publicado por: seba123neo en 14 Mayo 2008, 15:15 pm Hola,hace mucho lo habia echo asi,no es la gran forma,pero puede andar..
Código: Option Explicit 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 Private Sub Form_Load() Call Descargar("http://www.txt.net/orsq.jpg") End Sub Sub Descargar(Url As String) Me.MousePointer = vbHourglass Call URLDownloadToFile(0, Url, "c:\orsq.jpg", 0, 0) Me.MousePointer = vbDefault If Len(Dir("c:\orsq.jpg")) <> 0 Then MsgBox "existe" Kill "c:\orsq.jpg" Else MsgBox "no existe" End If End Sub saludos. |