2011-09-07 4 views
2

J'ai écrit un code HTML pour télécharger un fichier dans jsp.now je dois prendre ces données et travailler avec lui en utilisant un programme java dans jsp.can vous s'il vous plaît me fournir un exemple de code pour y parvenir.comment obtenir et utiliser son contenu d'un fichier téléchargé dans un programme java en jsp?

Merci

+1

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

+0

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

+1

Téléchargez apache-upload et ajoutez les fichiers .jar sous le dossier WEB-INF/lib. http://commons.apache.org/fileupload/ – adatapost

Répondre

0

Je suis sûr de votre code. S'il vous plaît suit ces étapes

  1. 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.

  2. 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.

  3. 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> 
+0

monsieur j'ai essayé les codes qui sont postés ici http: // stackoverflow.com/questions/1233639/upload-file-in-jsp-comment-modifier-un-chemin-par-défaut-pour-le-fichier-téléchargé ici pour le premier code je reçois la sortie qui télécharge un fichier. et les importations mentionnées dans le deuxième programme, mais lorsque ce programme est exécuté, il affiche une exception indiquant org.apache.jasper.JasperException: PWC6033: Impossible de compiler la classe pour JSP PWC6199: Erreur de servlet générée: chaîne: /// index2_jsp. java: 11: ne peut pas trouver le symbole symbole: classe servlet emplacement: package javax, etc ce que cela signifie? ce que je dois faire pour obtenir le contenu – sheba

+0

@ sheba: j'avais édité mon poste. – adatapost

+0

monsieur je suis un débutant à jsp et je ne peux pas saisir ces concepts.i a écrit un programme jsp pour afficher le contenu d'un fichier en utilisant request.getParameter() comme suit <% @ page import = "java.io. *" %> <% Fichier obj = nouveau Fichier (request.getParameter (resume)); FileInputStream obj1 = nouveau FileInputStream (obj); int c; while ((c = obj1.read())! = - 1) {out.print ((char) c);}%> mais il me montre une exception .Quel est le problème ici monsieur? – sheba

Questions connexes