2

私はHTML形式のページを作成して、記述フォームを持つテキストボックスで画像をアップロードします。 私はmultipart/form-dataを使用しています。 Servletのdopostの中でファイルを取得する ServletFileUpload upload = new ServletFileUpload();multipart/form-dataを使用している場合、リクエストから文字列パラメータを取得する方法は?

文字列パラメータを取得するには、私はrequest.getparameter()を使用しました。 それはいつも私にNULLを与える??? 私はそれを得ることができますか?

HTML ::サーブレットで

<form name="filesForm" action="/upload" method="post" enctype="multipart/form-data"> 

File : <input type="file" name="file"> 
<textarea name = "description" 
rows = "4" cols = "30">Enter comments here.</textarea> 
<input type="submit" name="Submit" value="Upload File"> 

ServletFileUpload upload = new ServletFileUpload(); 
upload.setSizeMax(500000000); 
FileItemIterator iterator = null; 
    try { 
     iterator = upload.getItemIterator(req); 
    } catch (FileUploadException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } // to handle contents or 
    // instances of request. 
    FileItemStream item = null; 
    try { 
     item = iterator.next(); 
    } catch (FileUploadException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } // get access each item on iterator. 
    java.io.InputStream in = item.openStream(); // allows to read the items contents. 


    Blob imageBlob = new Blob(IOUtils.toByteArray(in)); // store each item on Blob 


    // object after converting them to Bytes. 
    /*………. 
    Note: we are concerned on uploading images files. So the type of files is either (.jpg or gif) 
    ………. 
    */ 
    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    String counter="1"; 
    ServletOutputStream outt = resp.getOutputStream(); 
    //match incoming request Content type and invoke appropriate method for handel request 

答えて

5

そのフォームenctype="multipart/form-data"を持っている場合ので。 request.getParameter("paramnName");を使用して他のフォームフィールドを取得することはできません。それは常にあなたにNULLを与えるでしょう。

FormItemisFormField()を使用して、その正規のフィールドまたはファイルがあるかどうかを確認する必要があります。

例:

 try { 
      ServletFileUpload upload = new ServletFileUpload(); 
      response.setContentType("text/plain"); 

      FileItemIterator iterator = upload.getItemIterator(request); 

      while (iterator.hasNext()) { 
       FileItemStream item = iterator.next(); 

       InputStream stream = item.openStream(); 

       if (item.isFormField()) { 
        System.out.println("Got a form field: " + item.getFieldName() + " " +item); 

       } else{ 
        System.out.println("Got an uploaded file: " + item.getFieldName() + 
          ", name = " + item.getName()); 
       int len; 
       byte[] buffer = new byte[8192]; 
       while ((len = stream.read(buffer, 0, buffer.length)) != -1) { 

        response.getOutputStream().write(buffer, 0, len); 

       } 

      } 

     } 
} catch (FileUploadException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

? ??あなたは私に例を与えることができますか? – Hanaa

+0

リンクを確認しましたか? –

+0

私はそれを試してみましたが、今は私に例外を与えます – Hanaa

2

は答えに追加して、以下を使用することができ、入力フィールドの値を取得するには、質問@Sayo Oladeji

に対処:

HOW
System.out.println("Got a form field: " + item.getFieldName() + " " + Streams.asString(stream)); 
関連する問題