2011-12-15 9 views
0
public void execute(HttpServletRequest request) throws Exception { 
    DiskFileItemFactory factory = new DiskFileItemFactory(); 

    factory.setSizeThreshold(1*1024*1024*1024); //1 MB 
    /* 
    * Set the temporary directory to store the uploaded files of size above threshold. 
    */ 
    factory.setRepository(new File("c:\\temp")); 

    // Create a new file upload handler 
    ServletFileUpload upload = new ServletFileUpload(factory); 

    // Parse the request 
    List items = upload.parseRequest(request); 
    Iterator iter = items.iterator(); 

    while (iter.hasNext()) { 
     FileItem item = (FileItem) iter.next(); 
     if (item.isFormField()) { 
      InputStream uploadedStream = item.getInputStream(); 
      try { 
       File f = new File("C:\\temp\\index.jpg"); 
       item.write(f); 
       uploadedStream.close(); 
      } 
      catch (IOException e) { 
      } 
     } 
    } 

HTMLフォーム:apacheの共通ライブラリファイルアップロード

<form enctype="multipart/form-data" method="POST" action="<%=request.getContextPath()%>/main?cmd=ci"> 
    <table class = "lineable"> 
     <tr> 
      <td><input type="file" name="file1"/></td> 
      <td><input type="submit" name="q" value="import"/></td> 
     </tr> 
    </table> 
</form> 

私はindex.jpgを作成し、その中に保存して、JPGファイルにボタンを提出のどの値を「輸入」という言葉を書き込みます。なにが問題ですか。ありがとう。ここ

+0

「1 * 1024 * 1024 * 1024」は「1 MB」ではありません。 –

答えて

0

少なくとも一つの問題:

if(item.isFormField()){ 
    InputStream uploadedStream = item.getInputStream(); 
    ... 
} 

フォームフィールドを探しているなら、なぜあなたはそののInputStreamを見なければなりませんか?フォーム以外の項目、つまりファイルにのみ関心があります。

2回目の検査では、Commons IOを使用していて、そのInputStreamを見る必要はありません。小切手を否定するだけで大​​丈夫です。

+0

私がしたときに機能しました!(item.isFormField()){...} – Elbek

+0

実際にどこかからコードをコピーしました、それは正しく保存されませんでした、私は "!"マーク。出来た。ありがとう – Elbek

関連する問題