GXTファイルアップロード


GWTのファイルのアップロードについてネット上でカプセル化の比較的に良い例がありますみんなは検索することができます:gwtextux.
gwtextuxはGWT-EXTに基づいて開発された.本稿では,GXTコンポーネント向けに開発されたファイルアップロードの例について述べる.
 
GXTファイルのアップロードは主に5つのステップに分けられます.
 
最初のステップでは、Formのコミットプロパティを設定します.
 
 
//        form
FormPanel formPanel = new FormPanel ();
//   form  MULTIPART
formPanel.setEncoding (FormPanel.Encoding.MULTIPART);
//       POST
formPanel.setMethod (FormPanel.Method.POST);
//         
formPanel.setAction ("fileupload.do");
 
 
ステップ2:アップロードコンポーネントの追加
 
//     
FileUploadField fileUploadField = new FileUploadField ();
fileUploadField.setFieldLabel ("       ");
fileUploadField.setName ("file");

 
ステップ3:送信ボタン
 
Button button = new Button ("  ");
        button.addListener (Events.OnClick, new Listener <BaseEvent> ()
        {
            @Override
            public void handleEvent (BaseEvent be)
            {
                formPanel.submit ();
            }

 
ステップ4:アップロード・ストリームのサーブレットをバックグラウンドで受け入れる
 
public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {

        //       
        ServletFileUpload upload = new ServletFileUpload ();
        FileItemIterator iter;
        HttpSession session = request.getSession ();
        //       
        String fileSizeString = request.getHeader ("Content-Length");

        //          
        String sourceidString = null;
        try
        {
            //  request     
            iter = upload.getItemIterator (request);
            while (iter.hasNext ())
            {
                FileItemStream item = iter.next ();
                //     
                if (TermStrings.SOURCE_FILED.equals (item.getFieldName ()))
                {
                    InputStream stream = item.openStream ();
                    sourceidString = Streams.asString (stream, "utf-8");
                                  }
                //        
                if ("file".equals (item.getFieldName ()))
                {
                    //       
                    BufferedInputStream bin = new BufferedInputStream (item.openStream ());
                    //       
                    String filePath = getServletContext ().getRealPath ("      .xls");
                  
                    File file = new File (filePath);
		    //        
                    BufferedOutputStream bout = new BufferedOutputStream (new FileOutputStream (file));
                    byte[] b = new byte[8 * 1024];

                    int i = bin.read (b);
                    while (i > 0)
                    {
		        //    
                        bout.write (b, 0, i);
                        i = bin.read (b);
                    }
                    bout.flush ();
                    bout.close ();

ステップ5:web.xml
 
 
 <servlet-mapping>
    <servlet-name>FileUpload</servlet-name>
    <url-pattern>/fileupload.do</url-pattern>
  </servlet-mapping>

    <servlet>
    <servlet-name>FileUpload</servlet-name>
    <servlet-class>net.carefx.term.server.servlet.FileUpload</servlet-class>
  </servlet>
 
 
読み込みの進捗状況を実現するには、バックグラウンドでファイルの長さを取得する時間の輪訓を行います.
        String fileSizeString = request.getHeader ("Content-Length");

合計長さは、ファイル書き込みストリームの書き込み回数に基づいて書き込みの割合を判断します.このデータをフロントに表示します.
ファイルアップロードにはサードパーティjarパッケージが必要です
 
commons-fileupload-1.2.1.jar