2011-04-20 10 views
0

サーブレットと基本的なhtmlを使用してxmlファイルを取得し、tomcat apache経由でローカルサーバーにアップロードします。しかし、私が必要とするのは実際にフォーム(xmlファイルを入力ファイルタイプのタグで選択したもの)を送信する前です。ポップアップにはxmlの重要な項目の要約が表示されます。これにより、ユーザは自分がアップロードしているファイルをより自信を持たせることができます。誰かが私をある方向に導くことができますか?xmlファイルをアップロードする前に、htmlページは解析してxmlファイルの概要を表示する必要があります

私はapache commons-fileファイルアップロードAPIを使用しています。jquery-ajaxはポップアップなどのエフェクト、htmlは基本クライアント、サーブレットはサーバー側を処理します。

`PrintWriter out = response.getWriter(); 
    response.setContentType("text/plain");  


    DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(); 
    fileItemFactory.setSizeThreshold(1*1024*1024); 
    fileItemFactory.setRepository(tmpDir); 

    ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory); 

    try { 
     /* 
     * Parse the request 
     */ 
     List items = uploadHandler.parseRequest(request); 
     Iterator itr = items.iterator(); 

     while(itr.hasNext()) { 
      FileItem item = (FileItem) itr.next(); 
      out.println(item.isInMemory()); 
      /* 
      * Handle Form Fields. 
      */ 
      if(item.isFormField()) { 
       out.println("Field Name = "+item.getFieldName()+", Field Value = "+item.getString()); 

      } 
      if(item!=null){ 
       //Handle Uploaded files. 
       out.println("Field Name = "+item.getFieldName()+ 
        ", File Name = "+item.getName()+ 
        ", Content type = "+item.getContentType()+ 
        ", File Size = "+item.getSize()); 
       /* 
       * Write file to the ultimate location. 
       */ 
       out.println("Hello "); 
       File file = new File(destinationDir,item.getName()); 
       item.write(file); 
      } 
      out.close(); 
     } 
    }catch(FileUploadException ex) { 
     log("Error encountered while parsing the request",ex); 
    } catch(Exception ex) { 
     log("Error encountered while uploading file",ex); 
    }` 

これは私が、なぜそれがファイル名、コンテンツの種類とサイズが表示されていない取得していますHTML出力です。ファイル名は "test.txt"で、 "Hello"が内部にあり、目的地ディレクトリにアップロードされています。


フィールド名= confname、フィールド値=
フィールド名= confname、ファイル名= nullの場合、コンテンツタイプ=ヌル、ファイルサイズ= 0
こんにちは

私が理解から、

答えて

0

これに続いて、http://elmicoxcodes.blogspot.com/2007/03/asynchronous-upload-like-ajax-1.html が動作します。今、私はxmlを解析しているサーブレットから別の一時的な場所にファイルをアップロードして、xmlファイルの概要を表示して(再度)アップロードします。要約ページでは、ユーザーがすべてのものが正しいと判断した場合は、アップロードに進むか、そのポップアップから出て、diff xmlファイルを選択することができます。 every1に感謝します:)

0

、 javascriptはこのようにディスク上のファイルを開けません。あなたがする必要があるのは、ファイルを一時スペースに 'アップロード'し、次に解析するコンテンツをポストバックできるサービスをセットアップすることです。

ファイルをアップロードするかどうかを決める場合は、すでにアップロードされているファイルを実際の場所に移動して名前を変更するだけで済みます。

+0

@ g19fanatic:これは、私が一時的な場所 'DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();を使用しているコードです。 fileItemFactory.setSizeThreshold(1 * 1024 * 1024); \t \t fileItemFactory.setRepository(tmpDir); 'これで、解析するコンテンツをどのようにポストバックできますか、詳しく教えてください。ありがとうございます。 – abi1964

+0

ファイルが一時的にtmpDirにアップロードされた後、jquery-ajax GETを使用してサーブレット(?)を使用してそのファイルを開き、内容を読み込んでクライアントに返します。 jqueryはこのxmlデータを直接解析し、必要に応じてそれを表示できます。あなたは、その後、一時ファイルを削除するか、それがあなたが興味を持っている実際のパスに移動するための投稿をする "受け入れる"または "辞退"ボタンを持つことができます...ファイル、定期的に掃除し、古いファイルの一時ディレクトリを空にする何かを持っている – g19fanatic

+0

@ g19fanatic:jquery-ajax GETを使用して、あなたのサーブレット(?)を使用して、そのファイルを開き、内容を送って、クライアントに送り返してください_私は最近始まって問題に直面して困っています。 – abi1964

関連する問題