Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577

    Nusoap per prelevare un file dal server

    Salve a tutti,

    vorrei chiedervi se è possibile trasferire un file (jpg) dal server (Apache-php) al client usando un webservice nusoap.

    Grazie in anticipo.

    Luca

  2. #2
    Perchè usare NuSoap?

    In ogni caso, puoi farlo semplicemente, ad esempio codificando il contenuto binario in base64 e passando altri valori come il nome del file, la sua dimensione ed il content type.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577
    Ciao e grazie della risposta.

    Devo usare Nusoap perchè devo passare un file attraverso un webservice, in quanto l'interrogazione del server deve essere riservata.
    Comunque sono appena riuscita a gestire la cosa.

    Ora invece mi chiedevo se lato client, è possibile visualizzare una immagine nel browser senza prelevarla sotto forma di file da locale con il solito tag <img src=... .

    Bensì magari aprirla direttamente dall'HTTP Response sottoforma di application/octet-stream

    Questo perchè non vorrei depositare alcuna immagine sul web server client.

    Grazie in anticipo.

    Lucia

  4. #4
    Che cosa intendi per "non vorrei depositare alcuna immagine sul web server client"?

    Un browser, per visualizzare le immagini all'interno di una pagina web, ha bisogno del tag IMG.

    In ogni caso NON è necessario salvare il file sul file system, è sufficiente servirlo come un qualsiasi altro contenuto inviando i corretti header

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577
    Buongiorno.

    Cerco di spiegarmi meglio.

    Attraverso nuSoap trasferisco in binario un file jpg da un web server (Apache) ad un altro server (sempre Apache) con le istruzioni:

    $cid = $server->addAttachment('', $filename);
    $server->service($HTTP_RAW_POST_DATA);


    Il file arriva al secondo webserver attraverso HTTP in binario.
    A quel punto vorrei direttamente visualizzarlo e non prima scriverlo su disco (su Apache2) e poi recuperarlo con il tag IMG.
    Questo perchè, credo, che con il tag IMG non si possa indicare un URL che si trova sul primo apache.

    Ti spiego perchè:

    Consideriamo Apache1 e Apache2

    -Apache2 legge attraverso nusoap dall'Apache1.
    -Esiste un firewall che limita l'accesso all'Apache1 solo se la richiesta proviene dal ip del server dell'apache2.
    Pertanto, se io dal browser (che può essere pubblico) che legge dall'apache2 gli dico di andare a cercare un URL che si trova sull'Apache1, visto che il client finale non ha autorizzazione di accesso sull'Apache1 l'immagine non la vede.

    Comunque tu mi dici che non è possibile visualizzare alcuna immagine in un browser se non attraverso il tag IMG.

    Sto impazzendo...

    Grazie ancora.
    Se dovessi avere qualche illuminazione te ne sarei grata.

    Lucia

  6. #6
    Originariamente inviato da lucisetti
    Il file arriva al secondo webserver attraverso HTTP in binario.
    A quel punto vorrei direttamente visualizzarlo
    Visualizzarlo a chi?
    Un client si collega ad Apache2?
    E' la richiesta di questo client a scatenare la chiamata attraverso nuSoap al server Apache 1?
    Perchè non vuoi implementare un sistema di caching di qualche genere (es. su file system, database, etc.)?

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577
    Visualizzarlo ovviamente nel browser (magari non con il tag IMG se possibile).

    I Clients possono collegarsi solo ad Apache2.

    Si. E' la richiesta di questo client ad innescare la chiamata attraverso nuSoap ad Apache1, il quale accetta connessioni solo se provenienti da Apache2 (Attenzione! Non dai clients).

    Non voglio implementare un sistema di caching perchè avendo Apache2 su un provider pubblico, non posso depositare sui server del provider immagini di carattere giudiziario.

    Il server Apache1 invece si trova in una azienda dove le stesse immagini rimangono riservate.

    Grazie

    Lucia

  8. #8
    Se devi inviare al client solo l'immagine, puoi tranquillamente inviargliela come stream binario impostando gli header corretti (es. content-type).
    Se devi visualizzare anche altre informazioni, devi per forza far affidamento al tag IMG.

    In ogni caso, sei sicura valga la pena di usare SOAP invece di una richiesta HTTP diretta da Apache2 ad Apache1? In questo modo elimineresti l'overhead di SOAP.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577
    Credo che la soluzione migliore sia quella del content-type. Era proprio ciò che cercavo.
    Come la posso impostare?

    Circa la richiesta HTTP diretta tra Apache2 e Apache1 mi chiedo come posso far innescare la richiesta tra i due partendo da una richiesta client solo sull'Apache2 senza SOAP ?

    Lucia

  10. #10
    Per quanto riguarda la prima richiesta, dipende da tipo di immagine. Ogni formato ha il suo content type specifico. Eccone alcuni:

    jpg=image/jpeg
    gif=image/gif
    tif=image/tiff
    png=image/png
    bmp=image/bmp

    Per quanto riguarda il secondo quesito, è piuttosto semplice.

    L'utente si connette dal suo PC a Apache2 richiedendo una certa risorsa (es. http://apache2/sentenza-1234.tiff). Uno script PHP riceve la richiesta, verifica eventuali autenticazioni e successivamente richiede la risorsa ad Apache1 (es. tramite file_get_contents(), curl(), etc.). Una volta ricevuto il file script PHP lo invia al browser dell'utente corredato di tutte le intestazioni necessarie.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.