Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB6] upload automatico file a server web

    Salve a tutti,
    avevo aperto una discussione nella sezione javascript ma mi hanno detto che quello di cui ho bisogno non è fattibile con javascript, quindi chiedo aiuto qui
    Sto facendo uno stage con un prof per l'Università, una cosina semplice, creare e gestire un negozio virtuale con ZenCart (per chi non lo conoscesse è un CMS scritto in PHP che permette di creare appunto un negozio on-line)
    Dovrei automatizzare il procedimento di aggiornamento del listino del negozio, ed ho creato un file .bat che dovrebbe essere messo in esecuzione in automatico, ad esempio la notte, ed effettuare questi passi:
    1. scaricare il nuovo listino dal sito del fornitore
    2. confrontare tale listino con i prodotti presenti nel negozio e togliere quelli non più in vendita
    3. Inserire i prodotti nuovi

    Il mio problema sta nel fatto che per fare i punti 2 e 3 uso uno script php che necessita di caricare sul server il file del listino. Siccome però il processo deve essere fatto in automatico, non posso inserire manualmente il nome del file da caricare. Visto che il campo input type="file" del form per caricare il file è protetto, non posso scrivere in automatico il nome del file da caricare, che fra l'altro è sempre lo stesso, con javascript.

    Avevo quindi pensato ad un'applicazione vb6 che apre una pagina internet (con WebBrowser o anche aprendo esternamente Firefox), mette il focus nel campo dove inserire il nome del file da caricare e scrive in automatico il nome del file (o riempiendo il campo value con MSHTML.IHTMLInputFileElement oppure usando SendKeys() e simulando quindi l'inserimento da tastiera del nome del file)
    Poi per effettuare il submit automatico del form non ci sono problemi.
    Tenete conto che il form è questo, semplificato ovviamente, ma con i nomi e gli id giusti

    <html>
    <head>
    <title>esempio 1</title>

    </head>
    <body>
    ...
    <form enctype="multipart/form-data" name="uploadform" id="uploadfile" action="http://localhost/zencart/admin/sincro.php?action=upload" method="post">
    <input type="file" name="fileA" id="afile" size="20" />
    <input type="file" name="fileB" id="bfile" size="20" />
    <input type="submit"/>
    </form>
    ...
    </body>
    </html>

    Vi ringrazio in anticipo per l'attenzione e spero mi possiate aiutare...
    Considerate che sono poco poco bianco di VB6, so molto poco perchè sto iniziando ora, ed ho cercato 3 giorni sul web il modo per utilizzare WebBrowser e MSHTML per creare interagire con la pagina.....
    Nuovamente grazieee, a risentirci...

  2. #2
    Diciamo che piano piano vado avanti.
    Sono riuscito finalmente a creare un programmino che con WebBrowser apre la pagina contenente il form per il caricamento dei file. Parte il programma e nella finestra si apre la pagina con la casella per inserire il nome del file. Però come faccio a mettere il focus in quella casella di testo, e soprattutto inviare dei tasti con sendKeys? Perchè se non sbaglio se invio sendkeys direttamente il focus si sposta dalla casella e mi manda i caratteri dovunque ma non dove servono a me Penso che risolto questo ho finito...

  3. #3
    Allora, sono arrivato a questo punto:
    Riesco ad aprire la pagina che mi interessa, in automatico metto i nomi dei file da caricare (con sendkeys), riesco a spostarmi sul tasto invio del form ma inviando enter con sendkeys non mi manda niente.
    Dunque ora la domanda è:
    Come faccio ad inviare i nomi dei file che ho inserito nelle caselle al server?

    Il codice che ho usato è questo:

    Private Sub Form_Load()
    Dim doc As MSHTML.HTMLDocument
    Dim Afile As MSHTML.IHTMLInputFileElement, Bfile As MSHTML.IHTMLInputFileElement
    Dim Invia As MSHTML.IHTMLInputButtonElement

    WebBrowser1.Navigate Command
    Do Until WebBrowser1.ReadyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    Set doc = WebBrowser1.Document
    Set Afile = doc.Forms.Item(0).fileA
    Afile.focus
    SendKeys "C:\batchzencart\filebackup.txt", True
    Set Bfile = doc.Forms.Item(0).fileB
    Bfile.focus
    SendKeys "C:\batchzencart\ListinoDaImportare.txt", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{ENTER}"

    End Sub

    Qualcuno inorridirà vedendolo ma è il secondo programma che faccio in vsual basic quindi
    A risentirci

  4. #4
    Un particolare che mi son dimenticato di aggiungere:
    ho usato command perchè cosi richiamo il programma dal file .bat e gli passo l'indirizzo del negozio on-line che effettuerà l'aggiornamento. Per ogni cliente dovrò in caso cambiare il file bat e non ricompilare il programma....

  5. #5

    Altra soluzione....forse

    Salve a tutti, il thread langue, nessuno che può darmi una mano?
    Nel frattempo avrei pensato ad un'altra soluzione.
    Ho realizzato un programma con questo codice:

    Private Sub Form_Load()
    z% = Shell(Command, vbMaximizedFocus)
    DoEvents
    SendKeys "Prova Scrittura", True
    DoEvents
    SendKeys "{TAB}", True
    SendKeys "{ENTER}", True
    End Sub

    E' soltanto di prova, in pratica da linea di comando gli passo il percorso di Firefox con la pagnia da aprire (es. "C:\programmi\mozilla Firefox\firefox.exe -new-window www.google.it"

    Il programma mi apre correttamente firefox sulla pagina voluta, soltanto che con SendKeys non mi invia tutta la stringa, ma a volte perdo dei caratteri iniziali, a volte la perdo tutta. Infatti quando gli invio "{ENTER}" sulla pagina di google mi preme effettivamente il bottone cerca con Google ma non avendo inserito la stringa nella casella di testo non mi effettua nessuna ricerca.
    Dunque adesso il problema da risolvere potrebbe essere come temporizzare SendKeys in modo da attendere il completo caricamento della pagina e quindi l'intero invio della stringa, che poi nel progetto definitivo sarà il nome del file da uploadare attraverso il form della pagina web.
    Ri-grazie e resto fiducioso di un vostro consiglio

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.