Téléchargement et chargement de fichiers JSP
Dans cet exemple, nous allons découvrir le téléchargement et le téléchargement d'un fichier via JSP.
La sortie d’entrée de fichier est une opération très importante. Ici, nous allons lire et écrire un fichier en utilisant JSP.
Téléchargement de fichier JSP
- Nous pouvons télécharger n'importe quel fichier en utilisant JSP.
- Il peut s'agir d'un fichier texte, d'un fichier binaire, d'un fichier image ou de tout autre document.
- Ici, en cas de téléchargement de fichiers, seule la méthode POST sera utilisée et non la méthode GET.
- L'attribut Enctype doit être défini sur multipart/form-data.
Exemple : utilisation d'une action
Dans cet exemple, nous téléchargeons un fichier à l'aide de l'objet IO
Action_file.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru File</title>
</head>
<body>
<a>Guru File Upload:</a>
Select file: <br />
<form action="action_file_upload.jsp" method="post"
enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
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.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru File Upload</title>
</head>
<body>
<%
File 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(new File("c:\\temp"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax( maxFileSize );
try{
List fileItems = upload.parseRequest(request);
Iterator i = fileItems.iterator();
out.println("<html>");
out.println("<body>");
while ( i.hasNext () )
{
FileItem fi = (FileItem)i.next();
if ( !fi.isFormField () ) {
String fieldName = fi.getFieldName();
String fileName = fi.getName();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
file = new File( filePath + "yourFileName") ;
fi.write( file ) ;
out.println("Uploaded Filename: " + filePath + fileName + "<br>");
}
}
out.println("</body>");
out.println("</html>");
}catch(Exception ex) {
System.out.println(ex);
}
}else{
out.println("<html>");
out.println("<body>");
out.println("<p>No file uploaded</p>");
out.println("</body>");
out.println("</html>");
}
%>
</body>
</html>
Explication du code :
Action_file.jsp
Ligne de code 12-18 : Ici, nous créons un formulaire avec un champ de fichier, qui téléchargera le fichier sur le serveur et l'action sera transmise à action_file_upload.jsp.
Action_file_upload.jsp
Ligne de code 20 : Ici, nous donnons le chemin du fichier à un chemin particulier
Ligne de code 23-38 : Ici, nous vérifions si le type de contenu est multipart/form-data. Si tel est le cas, alors le contenu est de type fichier et il est lu. Une fois le fichier lu, il est écrit dans le fichier temporaire, puis le fichier temporaire est converti en fichier principal.
Lorsque vous exécutez le code ci-dessus, vous obtenez le résultat suivant
Sortie :
Nous téléchargeons le fichier en utilisant l'option du bouton Choisir le fichier et le bouton Télécharger le fichier téléchargera le fichier sur le serveur vers le chemin fourni.
Exemple : utilisation d'opérations JSP
Dans cet exemple, nous allons télécharger un fichier à l'aide d'opérations JSP. Nous prendrons un formulaire qui aura un bouton « Télécharger » et lorsque vous cliquerez sur le bouton « Télécharger », le fichier sera téléchargé.
Téléchargement_1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Uploading File</title>
</head>
<body>
File: <br />
<form action="guru_upload" method="post"
enctype="multipart/form-data">
<input type="file" name="guru_file" size="50" />
<br />
<input type="submit" value="Upload" />
</form>
</body>
</html>
Explication du code :
Ligne de code 11-12 : Ici, nous prenons un formulaire qui a une action sur le servlet guru_upload qui passera par une méthode POST. De plus, ici, nous enctype l'attribut ie qui spécifie comment les données du formulaire doivent être encodées et envoyées au serveur et il n'est utilisé qu'avec la méthode POST. Ici, nous définissons comme multipart/form-data qui est pour le fichier (car les données seront volumineuses).
Ligne de code 13 : Ici, nous spécifions l'élément guru_file avec le type file et donnons une taille de 50.
Ligne de code 15 : Il s'agit d'un bouton de type de soumission portant le nom « Télécharger » à travers lequel le servlet d'action sera appelé et la demande sera traitée et le fichier sera lu et écrit dans le servlet.
Guru_upload.java
package demotest;
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 extends HttpServlet {
private static final long serialVersionUID = 1L;
public guru_upload() {
super();
// TODO Auto-generated constructor stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(ServletFileUpload.isMultipartContent(request)){
try {
List <FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for(FileItem item : multiparts){
if(!item.isFormField()){
String name = new File(item.getName()).getName();
item.write( new File("c:/guru/upload" + File.separator + name));
}
}
//File uploaded successfully
request.setAttribute("gurumessage", "File Uploaded Successfully");
} catch (Exception ex) {
request.setAttribute("gurumessage", "File Upload Failed due to " + ex);
}
}else{
request.setAttribute("gurumessage","No File found");
}
request.getRequestDispatcher("/result.jsp").forward(request, response);
}
}
Explication du code :
Ligne de code 12-14 : Ici, nous devrons importer la bibliothèque org.apache.commons dans la configuration du code. Nous devrons importer la classe fileupload de la bibliothèque org.apache.commons.
Ligne de code 23 : Ici, nous avons la méthode doPost(), qui sera appelée lorsque nous transmettrons la méthode POST dans JSP et elle demandera et répondra aux objets comme paramètres.
Ligne de code 26 : Ici, nous créons un objet de la classe ServletFileUpload à partir du package fileUpload de la bibliothèque org.apache.commons qui vérifiera s'il existe des objets fichier dans JSP. S'il en est trouvé, ces objets fichier seront extraits de la demande.
Ligne de code 27-32 : Nous allons parcourir le nombre de fichiers en vérifiant combien d'éléments de fichier sont présents dans l'objet multiparts qui est un objet de liste (si nous téléchargeons plus d'un fichier) et l'enregistrerons dans le dossier c:/guru/upload avec le nom de fichier qui a été fourni. . Nous écrivons le fichier en utilisant la méthode d'écriture de l'objet fichier dans le dossier qui a été mentionné.
Ligne de code 34 : S'il n'y a pas d'exception, nous définissons l'attribut dans la requête comme gurumessage avec la valeur « Fichier téléchargé avec succès ».
Ligne de code 35-36 : Si une exception se produit, définissez le message indiquant « Échec du téléchargement du fichier »
Ligne de code 40 : Si le fichier n'est pas trouvé, définissez le message sur « Aucun fichier trouvé »
Ligne de code 42 : Transfert de la demande à l'aide de l'objet requestdispatcher vers result.jsp avec des objets de requête et de réponse.
Résultat.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Result</title>
</head>
<body>
<% String msg = (String)request.getAttribute("message");
out.println(msg);
%>
</body>
</html>
Explication du code :
Ligne de code 10 : Ici, nous obtenons l'attribut de l'objet de requête avec la valeur gurumessage dans un objet chaîne.
Ligne de code 11 : Ici, nous imprimons ce message.
Lorsque nous exécutons le code ci-dessus, nous obtenons le résultat suivant
Sortie :
Nous obtenons un formulaire dans lequel se trouvent des champs pour choisir un fichier dans le répertoire. Une fois le fichier sélectionné, nous devons cliquer sur le bouton de téléchargement.
Une fois le bouton de téléchargement cliqué, nous recevons le message indiquant que le fichier a été téléchargé avec succès.
Dans le diagramme ci-dessous, nous pouvons voir que le fichier a été téléchargé dans le dossier c:/guru/upload.
Téléchargement du fichier JSP
Dans cet exemple, nous allons télécharger un fichier depuis un répertoire en cliquant sur le bouton.
Téléchargement_1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Downloading Guru Example</title>
</head>
<body>
Guru Downloading File<a href="guru_download">Download here!!!</a>
</body>
</html>
Explication du code :
Ligne de code 10 : Ici, nous avons donné un lien pour télécharger un fichier à partir du dossier c:/guru/upload à l'aide du servlet guru_download .
Guru_download.java
package demotest;
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;
/**
* Servlet implementation class guru_download
*/
public class guru_download extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws 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 = new FileInputStream(gurupath
+ gurufile);
int i;
while ((i = fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Explication du code :
Ligne de code 3-5 : Ici, nous importons FileInputStream , IO Exception et PrintWriter à partir du package java.io.
Ligne de code 15 : Nous définissons guru_download servlet qui étend HttpServlet.
Ligne de code 18 : Comme nous avons défini un href, qui sera inclus dans l'URL afin que la méthode GET soit traitée (doGet sera appelée dans le servlet) qui renferme également des objets de requête et de réponse.
Ligne de code 19-20 : Nous définissons le type de contenu dans l'objet de réponse et obtenons également l'objet écrivain de la réponse.
Ligne de code 21-22 : Définir une variable comme gurufile comme valeur test.txt et gurupath comme c:/guru/upload/
Ligne de code 23-25 : Nous définissons le type de contenu à l'aide de l'objet de réponse et nous utilisons la méthode setHeader qui définit l'en-tête dans l'objet de réponse comme nom de fichier qui a été téléchargé.
Ligne de code 27-28 : Nous créons FileInputStream dans lequel nous ajouterons gurupath+gurufile.
Ligne de code 31-33 : Ici, nous avons pris un boucle tout en qui s'exécutera jusqu'à ce que le fichier soit lu, nous avons donc donné la condition != -1. Dans cette condition, nous écrivons en utilisant l'objet printwriter.
Lorsque vous exécutez le code ci-dessus, vous obtiendrez le résultat suivant
Sortie :
Sortie :
Nous devons cliquer sur downloading_1.jsp, nous obtiendrons un lien hypertexte intitulé « Télécharger ici ». Lorsque vous cliquez sur ce fichier de lien hypertexte, il sera téléchargé dans le système.
Résumé
- Nous avons pris connaissance du formulaire d'inscription pour s'inscrire à n'importe quelle candidature
- En savoir plus sur le fonctionnement des formulaires de connexion et de déconnexion.
- J'ai également appris à télécharger et télécharger un fichier via JSP.





