Je suis sûr de votre code. S'il vous plaît suit ces étapes
Télécharger la distribution binaire des communes-io communes-fileUpload et apache apache (FileUpload dépend Commons IO, alors assurez-vous que vous avez la version mentionnée sur la page de dépendances dans votre classpath avant de continuer.
Extrayez ces deux distributions et copiez commons-fileupload-1.2.2.jar
et commons-io-2.0.1.jar
sous le dossier WEB-INF/lib.
Dans le Servlet, vous devez importer javax.servlet
, javax.servlet.http
, import java.io
, java.util,org.apache.commons.fileupload
, org.apache.commons.fileupload.servlet
et org.apache.commons.fileupload.disk packages
.
Démo:
Créez un fichier servlet sous WEB-INF/classes dossier
package com.me;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.File;
import java.util.List;
import java.util.Iterator;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
public class FileUploadServlet extends HttpServlet
{
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
java.io.PrintWriter pw=response.getWriter();
final String SUCCESS="/success.jsp";
final String FAIL="/fail.jsp";
if(isMultipart)
{
try
{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
pw.print("total : " + items.size());
Iterator iter = items.iterator();
while (iter.hasNext())
{
FileItem item = (FileItem) iter.next();
pw.print("total : " + item);
if(!item.isFormField())
{
String fileName = item.getName();
String destFilePath=getServletContext().getRealPath("/upload/" + fileName);
File uploadedFile = new File(destFilePath);
item.write(uploadedFile);
}
}
request.setAttribute("message","file has been uploaded successfully!");
}catch(Exception ex)
{
ex.printStackTrace();
request.setAttribute("message","Cannot upload : " + ex.getMessage());
getServletContext().getRequestDispatcher(FAIL).forward(request,response);
}
getServletContext().getRequestDispatcher(SUCCESS).forward(request,response);
}
}
}
Configurer/enregistrer le servlet dans WEB-INF/web.xml
<web-app>
<servlet>
<servlet-name>fileupload</servlet-name>
<servlet-class>com.me.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fileupload</servlet-name>
<url-pattern>/fileupload</url-pattern>
</servlet-mapping>
</web-app>
Contenu de la vue (upload.jsp).
REMARQUE: Définir attribut enctype avec "multipart/form-data"
<form method="post" enctype="multipart/form-data" action="fileupload">
<input type="file" name="file"/>
<input type="submit"/>
</form>
Contenu de success.jsp et fail.jsp
${message}
Créez un dossier nommé upload
à la racine de context
.
Version JSP (Ce n'est pas une méthode recommandée)
de upload1.jsp
<form method="post" enctype="multipart/form-data"
action="showfile.jsp">
<input type="file" name="file"/>
<input type="submit"/>
</form>
showfile.jsp
<%@ page import="java.io.*" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="org.apache.commons.fileupload.FileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
String content="";
if(isMultipart)
{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext())
{
FileItem item = (FileItem) iter.next();
if(!item.isFormField())
{
BufferedInputStream buff=new BufferedInputStream(item.getInputStream());
byte []bytes=new byte[buff.available()];
buff.read(bytes,0,bytes.length);
content=new String(bytes);
}
}
}
%>
Content of File:
<pre>
<%=content%>
</pre>
double possible de [fichier de téléchargement dans JSP - comment modifier un chemin par défaut pour le fichier téléchargé] (http://stackoverflow.com/questions/1233639/upload-file-in-jsp-how-to-change-a-default-path-for-the-uploaded-file) – adatapost
monsieur j'ai essayé le premier code jsp de télécharger un fichier et j'ai obtenu la sortie, essayé le deuxième code jsp.there im obtenir une page vide et si j'ajoute ces lignes DiskFileItemFactory usine = new DiskFileItemFactory(); factory.setRepository (dir) ; j'ai une erreur. devrais-je importer un fichier jar pour cela? – sheba
Téléchargez apache-upload et ajoutez les fichiers .jar sous le dossier WEB-INF/lib. http://commons.apache.org/fileupload/ – adatapost