Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    117

    download tramite jsp di un file su un altro server

    Vorei realizzare una jsp che sia in grado di effettuare il download di un file che si trova su un server diverso da quello su cui si trova la mia jsp come posso fare?
    grazie?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Sarebbe più un compito da Servlet, che da JSP (le JSP dovrebbero solo occuparsi di visualizzare le informazioni, mai di elaborarle)... ad ogni modo, questo dovrebbe esserti utile:

    codice:
    FileOutputStream fos = new FileOutputStream( <dove_lo_salvo_e_con_che_nome> );
    URL tuaURL = new URL( <indirizzo del file da scaricare> );
    InputStream is = tuaUrl.openStream();
    byte[] buffer = new byte[4096];   // Scaricare 4KB di dati alla volta ti va bene?
    int byteLetti = 0;
    while(byteLetti >= 0) {
       byteLetti = is.read( buffer );
       fos.write(buffer, 0, byteLetti);
    }
    fos.close();
    is.close();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    117
    Ti ringrazio
    ma se volessi fare in modo che il file possa essere salvato sul computer client di chi si sta collegando come dovrei impostare il percorso di salvataggio?.
    mi spiego meglio io mi collego al sito www.pippo.it su tale sito c'è una jsp che contiene il riferimentoa un file (esempio un pdf) che si trova su un altro server vorrei fare in modo che l'utente dal sito www.pippo.it possa scaricare il file nascondendo il sito da cui viene scaricato.

    è possibile?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Glielo devi inviare in modo che all'utente compaia la classica finestrella per il download. A questo punto, però, non puoi più utilizzare una JSP, ma devi adottare la soluzione di una servlet.

    Una JSP, infatti, invia al client un'intestazione per una pagina WEB, mentre tu devi inviare al client un'intestazione per un tipo di dato binario.

    Il codice per l'invio di un file al client da servlet è il seguente:

    codice:
          response.setContentType("application/octet-stream; name=\"" + nomeFile + "\"");
          response.setCharacterEncoding("UTF-8");
          response.addHeader("content-disposition", "attachment; filename=\"" + nomeFile + "\"");
          
          FileInputStream fis = new FileInputStream( pathFile );
          byte[] dati = new byte[ fis.available() ];
          fis.read( dati );
          fis.close();
          response.setContentLength( dati.length );
          ServletOutputStream out = response.getOutputStream();
          out.write( dati );
          out.flush();
          out.close();
    Da notare che nomeFile è il nome del file che verrà visualizzato al client e propost come nome per il salvataggio (non necessariamente il nome fisico del file), mentre pathFile è il path fisico del file. Quindi, una soluzione senza troppe complicazioni, potrebbe essere quella di scaricare il file sul server in una determinata posizione, quindi inviarlo al client utilizzando quella posizione come path fisico.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    concordo che sia meglio usare una servlet ma potresti usare anche una JSP usando un opportuno contentType. Un esempio? vedi http://faq.javaranch.com/java/JspAndExcel per generare un file excel (dove imposta il content type appropriato)
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    117
    Grazie per il vostro preziosissimo aiuto!!
    Grazie al codice di Leleft e al suggerimento di ivenuti ho risolto in questo modo:

    <%@ page import="java.io.*" %>
    <%@ page import="java.net.*" %>
    <%@ page import="java.lang.Object" %>
    <%@page contentType="application/pdf" %>
    <body>
    <%
    OutputStream o = response.getOutputStream();
    URL prima=new URL("http://www.miosito.it/");
    URL completo = new URL(prima,"esempio.pdf");
    InputStream is = completo.openStream();
    byte[] buffer = new byte[32 * 1024];
    int byteLetti = 0;
    while(byteLetti >= 0) {
    byteLetti = is.read( buffer );
    o.write(buffer, 0, byteLetti);
    }
    o.flush();
    o.close();
    is.close();
    %>
    in questo modo si apre la finestra di salvataggio del file pdf e rimane nascota la provenienza

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.