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

    Problema con creazione e download file

    Ciao, premetto che utilizzo NetBeans per sviluppare.
    Ho creato una web application che, tra le altre cose, genera un file TXT che deve poter essere scaricato.
    Il meccanismo è questo: in una pagina inserisco i dati,poi clicco su AVANTI, il controllo passa al servlet che crea il TXT, poi va ad una pagina down.jsp dove c'è un link "Download" che permette di scaricare il file.
    La generazione del TXT avviene, banalmente, con l'istruzione new FileOutputStream(getPath()+"file.txt"), popolo il TXT, infine lo chiudo.
    Il metodo getPath restituisce il percorso assoluto in cui si trovano le pagine jsp nel server.
    A questo punto, il link i down.jsp è, semplicemente, Download.
    Il tutto, apparentemente, funziona, ma c'è un problema: in down.jsp, in realtà, mi fa scaricare il file creato nella sessione precedente!! In pratica, è come se non si aggiornasse il TXT, per cui carico sempre il file generato in precedenza. Anche se aggiorno la pagina è lo stesso, mentre se chiudo il browser, riaccedo e provo a scaricare, mi fa scaricare il nuovo file!
    Per la cronaca, se, invece, provo ad aprire il file da esplora risorse del mio server, lo trovo sempre aggiornato

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    mi sembra un problema di caching sul client.
    Prova a verificare le configurazioni della tua servlet affinchè si svuoti la cache o si forzi l'accesso su filesystem cmq
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  3. #3
    Ci ho già pensato, ma non è un problema di cache(il problema si presenta anche al primo caricamento dell'applicazione): è come se il server mettesse a disposizione il TXT creato all'inizio della sessione. L'aggiornamento del TXT avviene solo quando si crea una nuova sessione, ma sembra più un problema di server che di client

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Tiro ad indovinare: manca da qualche parte nel processo di scrittura del file TXT un .flush() e .close() sul writer incaricato della scrittura. A mio avviso comunque, potresti anche "forzare" il download tramite headers... tutto più chiaro se fai una piccola ricerca anche qui sul forum stesso.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Il close c'è, non capisco che intendi con "forzare il download tramite header", comunque segnalo un problema analogo che mi è capitato con un'altra web app: c'era un upload che consentiva di caricare un'immagine da visualizzare nella jsp successiva. Anche in questo caso il file veniva creato (era visibile esplorando le risorse del server), ma nella jsp non la vedevo. In quel caso risolsi sfruttando un altro dominio: l'immagine veniva salvata in una cartella di questo dominio e la jsp linkava così all'immagine esterna. L'impressione è che, per qualche motivo, Tomcat "blocca" le risorse nella cartella 'web' (e relative sottocartelle) del war finché la sessione è attiva, per poi sbloccarle a fine sessione.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    allora se hai messo sia il flush che il close, prova con quest'altro "trucchetto" (tipico per le immagini):

    codice:
    Scarica file
    ovvero fai l'append di un parametro (ricorda il "?") sempre variabile (potrebbe essere il timestamp ad esempio) al percorso del file da scaricare.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Ciao, ho provato col tuo metodo ma mi dà lo stesso problema!!
    C'è qualche blocco per cui il server non rende subito disponibile il file

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.