0

Je suis en train de télécharger un fichier en utilisant des formulaires et je suis un tutoriel trouvé sur internet. Avec ce code, je reçois un NullPointerException.NullPointException télécharger le fichier dans Struts 2

C'est le index.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
    <%@ taglib prefix="s" uri="/struts-tags"%> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <title>File Upload</title> 
    </head> 
    <body> 
    <form action="upload" method="post" enctype="multipart/form-data"> 
    <label for="myFile">Upload your file</label> 
    <input type="file" name="myFile" /> 
    <input type="submit" value="Upload"/> 
    </form> 
    </body> 

Ceci est success.jsp (en cas de téléchargement succès):

<%@ page contentType="text/html; charset=UTF-8" %> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<html> 
<head> 
<title>File Upload Success</title> 
</head> 
<body> 
    You have successfully uploaded <s:property value="myFileFileName"/> 
</body> 
</html> 

La classe d'action:

import java.io.File; 
    import org.apache.commons.io.FileUtils; 
    import java.io.IOException; 

    import com.opensymphony.xwork2.ActionSupport; 

    public class uploadFile extends ActionSupport{ 
    private File myFile; 
    private String myFileContentType; 
    private String myFileFileName; 
    private String destPath; 

     public String execute() 
    { 
        /* Copy file to a safe location */ 
       destPath = "C:/apache-tomcat-6.0.33/work/"; 

     try{ 
     System.out.println("Src File name: " + myFile); 
     System.out.println("Dst File name: " + myFileFileName); 

     File destFile = new File(destPath, myFileFileName); 
     FileUtils.copyFile(myFile, destFile); 

     }catch(IOException e){ 
     e.printStackTrace(); 
     return ERROR; 
     } 

     return SUCCESS; 
    } 
     public File getMyFile() { 
     return myFile; 
    } 
     public void setMyFile(File myFile) { 
     this.myFile = myFile; 
    } 
    public String getMyFileContentType() { 
     return myFileContentType; 
    } 
    public void setMyFileContentType(String myFileContentType) { 
     this.myFileContentType = myFileContentType; 
    } 
    public String getMyFileFileName() { 
     return myFileFileName; 
    } 
    public void setMyFileFileName(String myFileFileName) { 
     this.myFileFileName = myFileFileName; 
    } 
} 

Struts.xmf configurat fichier d'ions:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 
    <constant name="struts.devMode" value="true" /> 
    <constant name="struts.multipart.maxSize" value="1000000" /> 

    <package name="helloworld" extends="struts-default"> 
    <action name="upload" class="com.tutorialspoint.struts2.uploadFile"> 
     <interceptor-ref name="basicStack"> 
     </interceptor-ref> 
     <interceptor-ref name="fileUpload"> 
      <param name="allowedTypes">image/jpeg,image/gif</param> 
     </interceptor-ref> 
     <result name="success">/success.jsp</result> 
     <result name="error">/error.jsp</result> 
    </action> 
    </package> 
</struts> 

Note: error.jsp est équivalent à success.jsp, seul autre message est imprimé dans le corps.

+0

Poster un stacktrace. –

Répondre

0

FileUpload Interceptor doit fonctionner avant la BasicStack Interceptor Stack.

Modifier cette

<action name="upload" class="com.tutorialspoint.struts2.uploadFile"> 
    <interceptor-ref name="basicStack" /> 
    <interceptor-ref name="fileUpload"> 
     <param name="allowedTypes">image/jpeg,image/gif</param> 
    </interceptor-ref> 

à cette

<action name="upload" class="com.tutorialspoint.struts2.uploadFile"> 
    <interceptor-ref name="fileUpload"> 
     <param name="allowedTypes">image/jpeg,image/gif</param> 
    </interceptor-ref> 
    <interceptor-ref name="basicStack" />