Caricamento file JSP & Esempi di programmi di download di file

Sommario:

Anonim

In questo esempio, impareremo a caricare e scaricare un file tramite JSP.

File Input output sono operazioni molto importanti. Qui andremo a leggere e scrivere un file utilizzando JSP.

Caricamento file JSP

  • Possiamo caricare qualsiasi file utilizzando JSP.
  • Può essere un file di testo, un file binario, un file di immagine o qualsiasi altro documento.
  • Qui in caso di caricamento di file, verrà utilizzato solo il metodo POST e non il metodo GET.
  • L'attributo Enctype dovrebbe essere impostato su multipart / form-data.

Esempio: utilizzo dell'azione

In questo esempio, stiamo caricando un file utilizzando l'oggetto IO

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> File Guru  Caricamento file Guru: Seleziona file:

Action_file_upload.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. *, java.util. *, javax.servlet. *"%><% @ page import = "javax.servlet.http. *"%><% @ page import = "org.apache.commons.fileupload. *"%><% @ page import = "org.apache.commons.fileupload.disk. *"%><% @ page import = "org.apache.commons.fileupload.servlet. *"%><% @ page import = "org.apache.commons.io.output. *"%> Caricamento file Guru <%File di file;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";String contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = new DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (nuovo file ("c: \\ temp"));ServletFileUpload upload = nuovo ServletFileUpload (factory);upload.setSizeMax (maxFileSize);provare{List fileItems = upload.parseRequest (richiesta);Iteratore i = fileItems.iterator ();out.println ("");out.println ("");while (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {Stringa fieldName = fi.getFieldName ();String fileName = fi.getName ();booleano isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();file = nuovo file (filePath + "yourFileName");fi.write (file);out.println ("Nome file caricato: + percorso file + nome file + "
");}}out.println ("");out.println ("");} catch (eccezione ex) {System.out.println (ex);}}altro{out.println ("");out.println ("");out.println ("

Nessun file caricato

");out.println ("");out.println ("");}%>

Spiegazione del codice:

Action_file.jsp

Riga di codice 12-18: qui stiamo creando un modulo con campo file, che caricherà il file sul server e l'azione verrà passata a action_file_upload.jsp

Action_file_upload.jsp

Riga codice 20: qui stiamo fornendo il percorso del file a un percorso particolare

Riga codice 23-38: qui controlliamo se il tipo di contenuto è multipart / form-data. In tal caso, il contenuto è di tipo file e viene letto. Dopo che il file è stato letto, viene scritto nel file temporaneo e quindi il file temporaneo viene convertito nel file principale.

Quando esegui il codice precedente, ottieni il seguente output

Produzione:

Stiamo caricando il file utilizzando l'opzione del pulsante Scegli file e il pulsante Carica file caricherà il file sul server nel percorso fornito.

Esempio: utilizzo di operazioni JSP

In questo esempio, caricheremo un file utilizzando le operazioni JSP.

Prenderemo un modulo che avrà il pulsante "carica" ​​e quando fai clic sul pulsante di caricamento il file verrà caricato.

Uploading_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru caricamento file File:

Spiegazione del codice:

Code Line 11-12: Qui stiamo prendendo un form che ha azione sul servlet guru_upload che passerà attraverso un metodo POST. Inoltre, qui codifichiamo cioè l'attributo che specifica come i dati del modulo devono essere codificati e inviati al server ed è utilizzato solo con il metodo POST. Qui stiamo impostando come multipart / form-data che è per il file (poiché i dati saranno grandi).

Riga di codice 13: qui stiamo specificando l'elemento guru_file con il tipo di file e dando la dimensione come 50.

Riga codice 15: Questo è un pulsante di tipo submit con il nome "Upload" su di esso attraverso il quale verrà chiamato il servlet di azione e la richiesta verrà elaborata in quello e il file verrà letto e scritto nel servlet.

Guru_upload.java

demotest pacchetto;import java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class guru_upload estende HttpServlet {serialVersionUID lungo finale statico privato = 1L;public guru_upload () {super();// TODO Stub del costruttore generato automaticamente}protected void doPost (HttpServletRequest request, HttpServletResponse response) genera ServletException, IOException {if (ServletFileUpload.isMultipartContent (richiesta)) {provare {List  multiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (request);per (Elemento FileItem: multiparts) {if (! item.isFormField ()) {Nome stringa = nuovo file (item.getName ()). GetName ();item.write (nuovo File ("c: / guru / upload" + File.separator + name));}}//Il file è stato caricato con successorequest.setAttribute ("gurumessage", "File caricato con successo");} catch (eccezione ex) {request.setAttribute ("gurumessage", "Caricamento file non riuscito a causa di" + ex);}}altro{request.setAttribute ("gurumessage", "Nessun file trovato");}request.getRequestDispatcher ("/ result.jsp"). forward (richiesta, risposta);}}

Spiegazione del codice:

Riga di codice 12-14: qui dovremo importare la libreria org.apache.commons nella configurazione del codice. Dovremo importare la classe fileupload dalla libreria org.apache.commons.

Riga di codice 23: qui abbiamo il metodo doPost (), che verrà chiamato mentre passiamo il metodo POST in JSP e richiederà e risponderà agli oggetti come parametri

Riga di codice 26: qui stiamo creando un oggetto della classe ServletFileUpload dal pacchetto fileUpload dalla libreria org.apache.commons che controllerà se ci sono oggetti file in JSP. Se ne viene trovato uno, l'oggetto file verrà preso dalla richiesta.

Riga di codice 27-32: itereremo il numero di file controllando quanti elementi di file sono presenti nell'oggetto multiparts che è un oggetto elenco (se cariciamo più di un file) e lo salveremo nella cartella c: / guru / upload con il nome del file che è stato fornito. Stiamo scrivendo il file utilizzando il metodo di scrittura del fileobject nella cartella che è stata menzionata.

Riga di codice 34: se non ci sono eccezioni, stiamo impostando l'attributo nella richiesta come gurumessage con valore "File caricato con successo".

Riga di codice 35-36: se si verifica un'eccezione, impostare il messaggio "Caricamento file non riuscito"

Riga codice 40: se il file non è stato trovato, impostare il messaggio come "Nessun file trovato"

Riga codice 42: inoltro della richiesta utilizzando l'oggetto requestdispatcher a result.jsp con oggetti richiesta e risposta.

Result.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Risultato del guru <% String msg = (String) request.getAttribute ("messaggio");out.println (msg);%>

Spiegazione del codice:

Riga di codice 10: qui stiamo ottenendo l'attributo dall'oggetto richiesta con valore gurumessage in un oggetto stringa.

Code Line11: Qui stiamo stampando quel messaggio.

Quando eseguiamo il codice sopra, otteniamo il seguente output

Produzione:

Otteniamo un modulo in cui ci sono campi per scegliere un file dalla directory. Una volta selezionato il file, dobbiamo fare clic sul pulsante di caricamento.

Una volta che si fa clic sul pulsante di caricamento, viene visualizzato il messaggio che il file è stato caricato correttamente.

Nel diagramma sottostante possiamo vedere che il file è stato caricato nella cartella c: / guru / upload.

Download del file:

In questo esempio, scaricheremo un file da una directory facendo clic sul pulsante.

Downloading_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Esempio di download di Guru Guru Download del file  Scaricalo qui !!! 

Spiegazione del codice:

Riga di codice 10: qui abbiamo fornito il collegamento per scaricare un file dalla cartella c: / guru / upload utilizzando il servlet guru_download.

Guru_download.java

demotest pacchetto;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/ *** Classe di implementazione servlet guru_download* /public class guru_download estende HttpServlet {serialVersionUID lungo finale statico privato = 1L;protected void doGet (HttpServletRequest request, HttpServletResponse response) genera ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "attachment; filename = \" "+ gurufile + "\" ");FileInputStream fileInputStream = nuovo FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (richiesta HttpServletRequest, risposta HttpServletResponse)* /protected void doPost (HttpServletRequest request, HttpServletResponse response) genera ServletException, IOException {// TODO Stub del metodo generato automaticamente}}

Spiegazione del codice:

Riga di codice 3-5: qui stiamo importando FileInputStream, IO Exception e PrintWriter dal pacchetto java.io.

Riga di codice 15: stiamo definendo il servlet guru_download che estende HttpServlet.

Riga di codice 18: poiché abbiamo definito un href, che sarà racchiuso nell'URL, verrà elaborato il metodo GET (doGet sarà chiamato in servlet) che racchiude anche gli oggetti richiesta e risposta.

Riga di codice 19-20: stiamo impostando il tipo di contenuto nell'oggetto risposta e otteniamo anche l'oggetto scrittore dalla risposta.

Riga di codice 21-22: definizione di una variabile come gurufile come valore test.txt e gurupath come c: / guru / upload /

Riga codice 23-25: Stiamo impostando il tipo di contenuto usando l'oggetto risposta e usiamo il metodo setHeader che imposta l'intestazione nell'oggetto risposta come il nome file che è stato caricato.

Riga di codice 27-28: Stiamo creando FileInputStream in cui aggiungeremo gurupath + gurufile.

Riga codice 31-33: qui abbiamo preso un ciclo while che verrà eseguito fino a quando il file non viene letto, quindi abbiamo dato la condizione! = -1. In questa condizione stiamo scrivendo usando l'oggetto printwriter out.

Quando esegui il codice sopra, otterrai il seguente output

Produzione:

Produzione:

Dobbiamo fare clic su download_1.jsp otterremo un collegamento ipertestuale come "Scarica qui". Quando fai clic su questo file di collegamento ipertestuale, verrà scaricato nel sistema.

Sommario:

  • Abbiamo imparato a conoscere il modulo di registrazione per registrarsi in qualsiasi applicazione
  • Ulteriori informazioni su come funzionano i moduli di accesso e disconnessione.
  • Ho anche imparato a caricare e scaricare un file tramite JSP.