Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230

    Sapere se un file internet esiste

    salve ho un problema per le menti più forti di questo forum.
    Allora:
    ho un programma in vb6; uso i form.
    ho bisogno di sapere se un file di un determinato sito internet esiste oppure no.
    ho provato due metodi che non funzionano.
    ve li faccio vedere (nella variabile NOMURL c'è l'indirizzo internet del file che voglio scoprire se esiste oppure no)
    ---------------------------------------------------
    metodo 1 : API
    Dim VRIT As Long, VRIT2 As Long
    VRIT2 = InternetOpen(App.EXEName, INTERNET_OPEN_TYPE_PRECONFIG, vbNull, vbNull, 0)
    VRIT = 0
    VRIT = InternetOpenUrl(VRIT2, NOMURL, vbNull, 0, INTERNET_FLAG_RELOAD, 0)
    EsisteURL = IIf(VRIT > 0, True, False)
    Call InternetCloseHandle(VRIT)
    Call InternetCloseHandle(VRIT2)

    MA SIA CHE IL FILE ESISTE OPPURE CHE NON ESISTE DA SEMPRE GLI STESSI RISULTATI.
    DUNQUE IL METODO 1 NON FUNZIONA
    ---------------------------------------------------
    metodo 2: controllo INET
    dim PAGINA as string
    PAGINA = "not found"
    PAGINA = Inet1.OpenURL(NOMURL, 0)
    If InStr(1, LCase(PAGINA), "not found", vbTextCompare) = 0 Then
    EsisteURL = True
    Else
    EsisteURL = False
    End If

    QUESTO METODO FUNZIONA PER IL FILE PICCOLI, CIOè QUEI FILE CHE "ENTRANO" IN UNA VARIABILE STRINGA. INFATTI IL CONTROLLO INET CON IL METODO OPENURL SCARICA L'INTERO FILE.
    SE IL FILE ESISTE SCARICA IL FILE, MA SE NON ESISTE SCARICA LA PAGINA HTML "404 FILE NON FOUND".
    DUNQUE IL METODO 2 FUNZIONA SOLO PER I FILE MOLTO PICCOLI : PIù PICCOLI DI 40 -50 kilobyte.....
    ---------------------------------------------------

    allora c'è un metodo per sapere se un indirizzo internet di un file esiste oppure no????
    chiunque mi da la risposta lo considero come una divinità, visto che ho sbuldigato la guida del vb6 e non ho trovato unasega.

    GRAZIE!

    :-)
    Mauro V.
    ========================================

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi fai un esempio di un file su internet con cui poter provare se il codice funziona o no?

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Originariamente inviato da mvent
    ho un programma in vb6
    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Questo lo modifico io.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230

    :-)

    ad esempio un file internet come questo
    http://www.monicabellucci.it/gallery/images/1.jpg

    oppure come questo

    http://www.mahayana.it/index1.html


    sono due file che esistono e pesano :
    il primo file è 60 KB
    il secondo 2 KB

    file qualunque...
    ma perchè forse pensi che ci sono delle limitazioni in base al tipo di file?
    boh, mi pare di no.


    :-)
    mauro v.
    ==================

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per l'immagine (ma in genere per qualsiasi file) ti conviene usare la costante icByteArray per ricevere i dati.

    Ovvero

    codice:
    Dim f() As Byte
    f = Inet1.OpenURL("http://www.monicabellucci.it/gallery/images/1.jpg", icByteArray)
    Do Until Inet1.StillExecuting = False
        DoEvents
    Loop
    
    Open "C:\tmp.jpg" For Binary As #1
    Put #1, , f
    Close 1
    Set Image1.Picture = LoadPicture("C:\tmp.jpg")
    Kill "C:\tmp.jpg"
    Se ottieni una pagina del tipo 404 al posto dell'immagine, la Set non puo' essere eseguita.

  6. #6
    codice:
    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
    
    Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
        Dim lngRetVal As Long
        lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
        If lngRetVal = 0 Then DownloadFile = True
    End Function
    
    ' Nel programma:
        if not DownloadFile ("http://www.dominio.com/tuofile.jpg", "download.dat") then msgbox "File inesistente"

    Se il sito risponde con lo standard della pagina 404 allora la funzione ritorna false e puoi così sapere esattamente se il file esiste. Se invece il sito redireziona verso una pagina htm la funzione ritorna vero ed allora devi analizzare il contenuto del file (download.dat)

  7. #7
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230

    :-)

    grazie ad oregon e Socket2000 !!
    :-)

    comunque per dare completezza alla discussione:
    sia tramite INET, sia tramite API, per vedere se un file internet esiste bisogna scaricarlo.
    questo è un problema se devo controllare l'esistenza di un file, ad esempio, sopra i 10-20 o 30 MB.
    oppure se devo controllare l'esistenza di una serie di file, non posso perdere tempo a scaricarli tutti....

    non conoscete un modo per controllare se il file esiste senza doverlo scaricare?
    ad esempio per il controllo INET c'è il metodo getheader, che restituisce alcune informazioni sul file internet, come la dimensione o il tipo di dati. ma il metodo getheader funziona solo dopo aver eseguito il metodo OpenURL, che come sappiamo scarica il file dentro una variabile, stringa o vettore.
    possibile che non sia previsto un modo per sapere se un file esiste, senza doverlo scaricare ?

    :-)
    ciao
    Mauro V.
    ======================================

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.