2013-10-29 10 views
-1

안녕하세요,이 포인터에서 널 포인터 예외가 발생했습니다.이 문제를 해결하기 위해 많은 노력을하고 있지만이 문제가 해결되지 않으면 누구든지 나를 도와 줄 수 있습니다. 이에 ....파일을 업로드 할 때 nullpointer 예외가 발생합니다.

public class ImportAction extends ActionSupport implements ServletRequestAware { 

    private static final long serialVersionUID = 1L; 
    private File uploadFile; 
    private String uploadfileFileName; 
    private String uploadfileContentType; 
    private HttpServletRequest servletRequest; 

    public String getUploadfileFileName() { 
     return uploadfileFileName; 
    } 

    public void setUploadfileFileName(String uploadfileFileName) { 
     this.uploadfileFileName = uploadfileFileName; 
    } 

    public String getUploadfileContentType() { 
     return uploadfileContentType; 
    } 

    public void setUploadfileContentType(String uploadfileContentType) { 
     this.uploadfileContentType = uploadfileContentType; 
    } 

    public File getUploadFile() { 
     return uploadFile; 
    } 

    public void setUploadFile(File uploadFile) { 
     this.uploadFile = uploadFile; 
    } 
    RegisterDAO dao = new RegisterDAO(); 

    /** 
    * 
    * @return 
    * @throws 
    * Exception 
    */ 
    @SuppressWarnings("unchecked") 
    @Override 
    public String execute() throws Exception { 
     String filePath = servletRequest.getSession().getServletContext().getRealPath("/"); 
     System.out.println("filepath" + filePath); 
     System.out.println("file" + getUploadFile()); 
     System.out.println("filename" + getUploadfileFileName()); 
     File fileToCreate = new File(filePath, this.uploadfileFileName); 
     try { 
      FileUtils.copyFile(this.uploadFile, fileToCreate); 
     } catch (IOException e) { 
      addActionError(e.getMessage()); 
     } 
     return SUCCESS; 


//  Model m = new Model(); 
//  String result = m.fileimport(uploadFile, uploadfileFileName); 
//  String result = m.fileimport(); 
//  if (result.equals(SUCCESS)) { 
//   return SUCCESS; 
//  } else { 
//   addActionError(getText(result)); 
//   return "failure"; 
//  } 
    } 

    @Override 
    public void validate() { 
     System.out.println("inside validate of LA"); 
    } 

    @Override 
    public void setServletRequest(HttpServletRequest servletRequest) { 
     this.servletRequest = servletRequest; //To change body of generated methods, choose Tools | Templates. 
    } 
+0

가능한 중복 ([적인 filePath 근처 업로드 파일 널 포인터 예외] http://stackoverflow.com/questions/19634677/in-uploading-file-null-pointer- except-near-filepath) –

+0

중복되어 이미 답변되었습니다. 변수 이름을 수정하지 않았습니다. 적어도 우리가 당신에게주는 대답을 읽으십시오 ....... –

답변

0

내가 대신 파일 경로를 사용하는 서블릿 컨텍스트에서 getResourceAsStream하려고 권하고 싶습니다. 그러면 WAR 파일을 사용할 수 있습니다.

고려해야 할 다른 문제는 파일이 테스트 사례를 제외하고 서버에 상주 할 가능성이 거의 없다는 것입니다. 원격 사용자의 경우 파일 경로가 의미가 없습니다. "파일 업로드"는 서버가 아닌 시스템에서 발생합니다. 이 경우 코드가 올바르지 않습니다.

+0

이 코드에서 파일 확장자를 읽으 려합니다. – user2838630

+0

파일 이름을 가져올 필요가 없습니다. – user2838630

+0

아니, 할 수 없습니다. 그냥 InputStream. 요구 사항이 명확하지 않습니다. – duffymo

0

당신은 코드 다음은 WAR와 같은 응용 프로그램이 null를 돌려줍니다 배포 한 경우

String filePath = servletRequest.getSession().getServletContext().getRealPath("/"); 
+0

그것을 극복하는 방법 .. – user2838630

+0

내가 이미 말한 것은 - getResourceAsStream입니다. – duffymo

+0

@duffymo는'getResourceAsStream'을 올바르게 사용합니다. 파일 경로 바로 앞에 – Shamse

0
private File uploadFile; 
    private String uploadfileFileName; 
    private String uploadfileContentType; 

이, 다른 속성의 작은 f을 발견, 그것은 파일 필드 있기 때문에, F을 잘못 했어야한다 이름이 유효 uploadFile

입니다 :

private File upload; 
    private String uploadFileName; 
    private String uploadContentType; 

이 사람은 또한 유효합니다

private File uploadFile; 
    private String uploadFileFileName; 
    private String uploadFileContentType; 
관련 문제