2017-10-05 6 views
0

サーブレットにExcelをアップロードして処理しようとしています。アップロード中に私のフォームにenctype = "multipart/form-data"を設定しました。しかし、私のサーブレットでは、isMultiPart(request)はfalseを返します。サーブレットでExcelをアップロードする

JSPコード:

機能fSubir()

{ 

fFreezeButtons(); 

this.document.forms[0].action="../servlet/renault.saf.demandepiece.demandes.servlet.AjouterPoste"; 

if (this.document.forms[0].Flag.value == "1") 

{ 

this.document.forms[0].Flag.value = "0"; 

this.document.forms[0].submit(); 

} 

}

の.xlsx型ファイル選択:

<input type="submit" value="upload" onclick="fSubir()"/> 

私の.Jspには、enctypeを持たないgetメソッドの別の形式もあります。

サーブレットコード。

パブリッククラスAjouterPosteは、私はファイルをアップロードしようとしているれている私のコードの部分を見つけてください{

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
private final String UPLOAD_DIRECTORY = "/appli01/safdev01/saf_cl2/test/"; 

public void performTask(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    try { 
     System.out.println("inside the AjouterPoste class - performTask"); 
     boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
     System.out.println("Inside doPost:"+isMultipart+":"+request); 

SapprServletを拡張します。

+0

正しく覚えていれば、セキュリティ上の理由からJS関数を使用してファイルをアップロードすることはできません。だから、fSubir()を呼び出さずにフォームを送信してください。 –

+0

関数fSubir()を削除しようとしても同じ例外が発生する – Charan

+0

どのような例外がありますか?アップロードフォームを含むjspコードを投稿してください。 –

答えて

0

multipart/form-dataのフォームを送信すると、request.getParameter(paramName)を使用できません。代わりに以下のコード(Apache FileUploadライブラリの一部)

try { 
     List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
     for (FileItem item : items) { 
      if (item.isFormField()) { 
       // this part is used instead of request.getParameter 
       String fieldName = item.getFieldName(); 
       String fieldValue = item.getString(); 
       // do something here 
      } else { 
       // this is the file processing part 
       String fieldName = item.getFieldName(); 
       String fileName = FilenameUtils.getName(item.getName()); 
       InputStream fileContent = item.getInputStream(); 
     ... 
      } 
     } 
    } catch (FileUploadException e) { 
     throw new ServletException("exception", e); 
    } 

を使用して、特定のアイテムがFileItem.isFormField()方法はtrueを返すかどうかを確認することにより、通常のフォーム項目(とないファイル)であることを伝えることができます。

関連する問題