2013-10-29 3 views
0

Здесь я загружаю файл, и я хотел прочитать тип файла и расширение файла, но когда я даю файл, я получаю исключение nullpointer возле FileUtils.copyFile (this.uploadFile, fileToCreate); может кто-нибудь плз решить эту проблему ...Я получаю сообщение об исключении исключений нулевого указателя, используя struts2

public class ImportAction extends ActionSupport implements ServletRequestAware { 

    private static final long serialVersionUID = 1L; 
    private File uploadFile; 
    private String uploadFileName; 
    private String uploadContentType; 
    private HttpServletRequest servletRequest; 

    public File getUploadFile() { 
     return uploadFile; 
    } 

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

    public String getUploadFileName() { 
     return uploadFileName; 
    } 

    public void setUploadFileName(String uploadFileName) { 
     this.uploadFileName = uploadFileName; 
    } 

    public String getUploadContentType() { 
     return uploadContentType; 
    } 

    public void setUploadContentType(String uploadContentType) { 
     this.uploadContentType = uploadContentType; 
    } 
    RegisterDAO dao = new RegisterDAO(); 

    /** 
    * 
    * @return 
    * @throws 
    * Exception 
    */ 
    @SuppressWarnings("unchecked") 
    @Override 
    public String execute() throws Exception { 
     try { 
      String filePath = servletRequest.getSession().getServletContext().getRealPath("/"); 
      System.out.println("Server path:" + filePath); 
      File fileToCreate = new File(filePath, this.uploadFileName); 
      FileUtils.copyFile(this.uploadFile, fileToCreate); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      addActionError(e.getMessage()); 
      return INPUT; 
     } 
     Model m = new Model(); 
     String result = m.fileimport(uploadFile, uploadFileName); 
     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 hsr) { 
     this.servletRequest = hsr; //To change body of generated methods, choose Tools | Templates. 
    } 
} 

Это моя страница JSP

<s:form method="post" action="file" enctype="multipart/form-data"> 
      <s:file label="choose file" name="uploadFile"></s:file> 
      <s:submit></s:submit> 
     </s:form> 

я должен напечатать мой путь к файлу его приход как этот filepathD: \ Ranjith \ ranjithdemo3 \ сборка \ Web \

+0

Вы не инициализирован uploadFile и uploadFileName .. Или не разделяет этот код alteast –

+0

может у плз скажите мне, как сделать это благодаря – user2930535

+0

, где для инициализации, что один – user2930535

ответ

0

проверьте пожалуйста;

  1. имени поля в HTML форме по отношению к ActionServlet
  2. проверки ENC-типа с HTML-формой
+0

мог бы u plz видеть мое обновление выше – user2930535

0

Проверьте, переименование поля типа контента в своем классе действия от uploadContentType до uploadFileContentType работ. Также измените uploadFileName на uploadFileFileName.

Измените соответствующий геттер и сеттер. Я не уверен, что это вызывает проблему. Так что это скорее пробное и ошибочное предложение.

Обновление: Кажется, вы получаете NPE в действии GET.

Перед вашей попытки блокировать добавить этот код:

if(!servletRequest.getMethod().equalsIgnoreCase("POST")){ 
    return INPUT; 
} 

Это не очень элегантно, но должен работать на этом примере. Я проверил его. :)

+0

Я изменил и проверил, но это не работает ... – user2930535

+0

mu file path is coming this this filepathD: \ ranjith \ ranjithdemo3 \ build \ web \ – user2930535

+0

и имя файла - не пустое? – Atul

1

Это третий вопрос с этим кодом менее чем за 24 часа ... это взято в режиме онлайн arcticle? Не могли бы вы сообщить об этом здесь, пожалуйста?

Кстати, основная проблема заключается в том, что в загрузке файлов с Struts2 через fileUploadInterceptor, необходимо соблюдать следующую структуру

private File <filevarname>; 
private String <filevarname>FileName; 
private String <filevarname>ContentType; 

так что если ваш <filevarname> является «uploadFile», вы должны иметь

private File uploadFile; 
private String uploadFileFileName; 
private String uploadFileContentType; 

если вы измените его на «загрузить» вместо этого, он должен быть

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

, что более читаемо для меня.

Смежные вопросы