Javaコード実装ファイルのダウンロード機能

昨日、要件ドキュメントの要件に応じて、彼らはダウンロードしたファイルの機能を行うべき、卒業は自分自身がこれを行っていない、長い、長い時間がかかったので、インターネットBaiduのを所有し、次のように最終的に開発されたコードがありました。

ああ!はい、私は私のアイデアについてお話したいと思い、あなたが最初のサーバーにファイルを保存して、ファイルをローカルにダウンロードするためのパスを取得する必要があります。これは、ファイルテーブルのパスの最初のクエリです。

LPEdorAnnexテーブルは:(これはテーブルのそれらの使用である- AnnexParth使用されるフィールド)

 

ここにあなたのコードは、Javaクラスで書かれているかのように、私は非常に良いではありませんどのように従事するかわからない、間違いなし、主な理由は彼のために強さではないですが、またそれが自分急いであったため、JSPページに書きました将来的には、我々がダウンしてよく見て取らなければならない時間がある場合は非常に多くのイベントが慎重に検討します。

  。1 <% -
   2    。のIntelliJ IDEAによって作成されます
   。3    ユーザー:非難など
   。4    日:2019年8月29日
   。5    時間:10:49
   。6    変更するには、このテンプレートを使用するファイルを|設定| 。テンプレートファイル
   。7    機能:問題のメンバーが発行した
   8 - %>
   9 <%
 10  @ プログラム名:
 11  @ プログラム機能:保存-発行の問題メンバー
 12  // 日付を作成します:2019年9月9日
 13  // 作成:
 14  // 更新レコードを:更新更新更新原因/内容
15%>
 16 <%@ページのインポート= "com.sinosoft.utility.TransferData" %>
 17 <%@のページのインポート = "com.sinosoft.utility.VData" %>
 18 <%@ページのインポート = "com.sinosoft.service.BusinessDelegate" %>
 19 < %の@ページのインポート = "com.sinosoft.lis.schema.LPPolicyHolderSchema" %>
 20 <%@ページのインポート = "com.sinosoft.lis.mgubq.PEdorTypeACUI" %>
 21ページ@ <%輸入 = "com.sinosoft。 utility.CErrors」%>
 22 <%@のページのインポート = "org.apache.log4j.Logger" %>
 23 <%の@ページのインポート = "com.sinosoft.lis.mgubq.BQQuestionFileIssueUI" %>
 24<%@ページのインポート = "java.io. *" %>
 25 <%@ページのインポート = "org.apache.jasper.JasperExceptionが" %>
 26 <%@ページのcontentType = "text / htmlの;のcharset = UTF-8 "%>
 27 <%@は、ファイル=含ま" ../共通/ JSP / UsrCheck.jsp」%>
 28 <%
 29      // 输出参数
30      = CErrorsテロはnullを31      文字FlagStr =「失敗」32      文字列コンテンツ= "" ;
33      GlobalInput TGI = 新しいGlobalInput()。
34      TGI =(GlobalInput)セッション。getAttribute( "GI" );
35     TTransferData = TransferData 新しい新しいTransferData();
 36  
37      // ページの有効決意
38は、     IF(TGIの==のNULL ){
 39          FlagStr = "失敗" ;
 40          コンテンツ= "無効なページ、再着陸" ;
 41は          Logger.getLogger( " BQQuestionFileIssueSave無効なページ、再上陸"「)の情報(。」);
 42れる      } {
 43がある         //は、ログイン管理者アカウントセーブ
44をある          文字列演算子= tGI.Operator;
 45の         // fmtransactオペレータ
 46の         // 取得フォアグラウンドデータ
47         Request.getParameter tOperate =文字列( "fmtransact" );
 48          // 取得情報ページエントリ
49          tTransferData.setNameAndValue( "OtherNo"、request.getParameter( "OtherNo")); // √ポリシー番号
50          tTransferData.setNameAndValue( " QuestionType "request.getParameter(" QuestionType ");)// √問題型部材
51は、          (QuestionAttribute " request.getParameter(" QuestionAttribute ")tTransferData.setNameAndValue"); // 問題属性部材√ 
52で          tTransferData.setNameAndValue(" QuestionReasion "request.getParameter(" QuestionReason「)); // √問題片の理由
53         tTransferData.setNameAndValue( "QuestionSendEmail"、request.getParameter( "のsendEmail")); // 下发邮箱√ 
54          tTransferData.setNameAndValue( "QuestionDes"、request.getParameter( "QuestionDes")); // 问题件描述√ 
55  
56          tTransferData.setNameAndValue( "QuestionID"、request.getParameter( "QuestionID" ));
57          tTransferData.setNameAndValue( "sendnode"、request.getParameter( "sendnode" ));
58          tTransferData.setNameAndValue( "差出人"、request.getParameter( "差出人" ));
59          tTransferData.setNameAndValue( "senddate"、request.getParameter( "senddate" ));
60         tTransferData.setNameAndValue( "リプライヤ"、request.getParameter( "リプライヤ" ));
61          tTransferData.setNameAndValue( "replycontent"、request.getParameter( "replycontent" ));
62          tTransferData.setNameAndValue( "replydate"、request.getParameter( "replydate" ));
63          tTransferData.setNameAndValue( "状態"、request.getParameter( "状態" ))。
64          tTransferData.setNameAndValue( "ファイルパス"、request.getParameter( "ファイルパス"))。// 问题件附件下载路径
65  
66          tTransferData.setNameAndValue( "演算子" 、tOperate)。
         
         ( "downloadQuestion" .equals(tOperate)){
 69              のtry {
 70                  列filePathに= request.getParameter( "ファイルパス" );
 71である 
72                  // 影響を受けるサーバーにドキュメントをアップロードすることによって影響zhutingパスを取得するように構成されたサーバ
73は、                  文字列= tpath "" ;
 74                  文字TFileName = "" ;
 75                  文字列のSQL = "" ;
 76  
77  
78                  ブール tFileExistsの= trueに79                  のSystem.out.println( "ファイル名ダウンロードする:" + 除いたファイルパスを指定して)。
80                  ファイルファイル= 新しいですファイル(filePathに);
81                  であれば(!file.exists()){
 82                      tFileExists = 83                  }
 84                  であれば(tFileExists){
 85                      のInputStream Fiが= 新しいFileInputStreamを(ファイル)。
86                      // なBufferedOutputStream处理TXT格式时多出2行空行
87                      response.reset()。
88                      response.setContentType( "アプリケーション/ X-ダウンロード" );
89                      response.addHeader( "コンテンツの廃棄"、 "添付ファイル;ファイル名=" + file.getName())。
90 
91                      のOutputStream outOS = response.getOutputStream()。
92                      なBufferedOutputStream BOS = 新たなBufferedOutputStream(outOS)。
93  
94                      int型開始。
95                      バイト [] BT = 新しい バイト [4096 ];
96                      一方、((= fi.read(BT)開始)= -1!){
 97                          bos.write(BT、0 、開始)。
98                      }
 99  
100                      bos.flush()。
101                      fi.close()。
102                     bos.close();
 103                      outOS.close();
 104                      out.clear();       // キャッシュの内容空
105を                      pageContext.pushBody外=();   //のうちのPageContextを更新プロパティ
106  
107  
108  
109                  }
 110              } キャッチ(例外E){
 111  
112              }
 113  
114          }
 115          // 呼出UIクラス
1 16          のtry {
 117              // 送信データVDATAを調製
1~18              VDATA = tVData新しい新しいVDATA();
 119              tVData.add(tTransferData);
 120              tVData.add(TGI);
 121              BusinessDelegate tBusinessDelegate = BusinessDelegate.getBusinessDelegate();
 122              // 一時的に書き込むUIクラスを呼び出して、第1の直接呼出UIクラスではありません手法
 123              //     IF(!tBusinessDelegate.submitData(tVData、tOperate、 "PEdorTypeACUI")){ 
124              BQQuestionFileIssueUI tBQQuestionFileIssueUI = 新しい新しいBQQuestionFileIssueUI();
 125              IF(!{tBQQuestionFileIssueUI.submitData(tVData、tOperate))
 126                 含有量が+ TBQQuestionFileIssueUI.getErrors(= "起因する:.失敗し保存するデータ")getError(0 ).errorMessage;
 127                  FlagStr = "失敗" ;
 128              } そうでなければ{
 129                  FlagStr = "成功" ;
 130                  コンテンツ=「処理が成功しました! " ;
 131である             }
 132          } キャッチ(例外EX){
 133              ex.printStackTrace();
 134              コンテンツ= FlagStr +"例外処理、システム保守要員コンタクト! " ;
 135              FlagStr ="失敗" 136          }
 137 
138      }
 139  
140%>
 141 <HTML>
 142 <スクリプトタイプ= "テキスト/ JavaScriptを">
 143      のtry {
 144          parent.fraInterface.afterSubmit( '<%= FlagStr%>'、 '<%=コンテンツ%>' );
145      }
 146      キャッチ(EX){
 147          <% -アラート( '<%= tContent%>'); - %>
 148      }
 149 </スクリプト>
 150 </ HTML>

注:コードワードの次の2行を追加しない場合

    out.clear(); //キャッシュの内容を消去し
    て= pageContext.pushBodyを();のPageContextのうち//属性の更新

実際にファイルをダウンロードすることができますが、最後はコンソールがこのエラーを報告しますで、Baiduはと、問題のTomcatの独自のバージョンを言った:のgetOutputStream()はすでに迷惑な人、この応答の異常のために呼ばれてきたが、奇妙なことがある報告しますLinuxシステムは、この問題は発生しません、もちろん、常に問題があるだろうのソリューションを持っています。2行のコードを追加した後、このような間違いを報告しないでしょう。

 

 

おすすめ

転載: www.cnblogs.com/dongyaotou/p/11546724.html