昨日、要件ドキュメントの要件に応じて、彼らはダウンロードしたファイルの機能を行うべき、卒業は自分自身がこれを行っていない、長い、長い時間がかかったので、インターネット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行のコードを追加した後、このような間違いを報告しないでしょう。