この記事では、参照用のStruts2ファイルのアップロードとダウンロードのための特定の実装コードを共有しています。特定のコンテンツは次のとおりです
1。ファイルアップロード
Strutsによって送信されたファイルコンポーネントをアップロードし、
フロントデスク:
1)提出方法投稿
2)フォームタイプMultiPart/Form-Data
3)入力型=ファイル
舞台裏:
Apacheが提供するFileuploadコンポーネント
コアカテゴリ:
FileItemFactory FileItem Factory
サーブレットのファイルアップロード用のServletFileuploadコアクラス
fileItemアップロードされたフォームファイルアイテムの情報をカプセル化します。要するに、ファイルのアップロードは処理するのが面倒です。
Strutsのファイルアップロード<br />ファイルアップロードインターセプターは、遅いファイルアップロード機能に役立ちます
<インターセプターname = "fileupload"/>
upload.xml
<Struts> <パッケージ名= "upload_" extends = "struts-default"> <! - 注:キーワード "fileupload"はキーワードでは使用できません "fileupload" - > <アクションname = "fileuploadaction"> <! - アップロードされたファイルのタイプを制限 - > name = "fileupload.allowedextensions"> txt、jpg、jar </param> <! - 実行されているファイルの種類を制限[上記と同時に使用し、交差点を取得] <param name = "fileupload.allowedtypes"> text/plain </param> - > interpector-ref> <</e suctures view-> <result name = "input">/e/error.jsp </result> </action> </package> </struts>
upload.jsp
<body> <form action = "$ {pagecontext.request.contextpath}/fileuploadaction" method = "post" enctype = "multipart/form-data"> username:<input type = "text" name = "username"> <br/>ファイル:ファイル:<入力タイプ= "ファイル"ファイル= "ファイル</body>error.jsp
<body> error.jsp <br/> <! - ランタイム中にStrutsフレームワークによって生成されたすべてのエラーメッセージを表示 - > <%@ taglib uri = "/struts-tags" prefix = "s"%> <s:s:fielderor> </body> success.jsp> success
コアコード
fileupload .class
public class fileuploadはactionsupportを拡張します{//対応するフォーム:<入力型= "file" name = "file1"> private file1; //ファイル名プライベート文字列file1fileName; //ファイルタイプ(mime)private string file1contenttype; public void setfile1(file file1){this.file1 = file1; } public void setFile1FileName(string file1fileName){this.file1fileName = file1FileName; } public void setFile1ContentType(String file1ContentType){this.file1contenttype = file1contentType; } @Override public String execute()スロー例外{/*********アップロードされたファイルを取得して処理******* //ファイルをアップロードディレクトリにアップロードする//アップロードされたディレクトリパス文字列パス= servletactionContext.getServletContext()。 //ターゲットファイルオブジェクトファイルdestfile = new File(path、file1fileName); //アップロードされたファイルをターゲットfileutils.copyfile(file1、destfile)にコピーします。成功を返す; }}処理の詳細をアップロードします
a。ファイルサイズ制限
構造体でサポートされている最大ファイルのアップロードはデフォルトで2mで、定数によって変更されます。
<! - 4。アップロードされたファイルの最大サイズを30mに変更する - >
<constant name = "struts.multipart.maxsize" value = "31457280"/>
b。許容されるタイプのアップロードされたファイルを制限します:TXT/JPGサフィックスを持つファイルインターセプターのみが許可されます:ファイルアップロードタイプを制限するために挿入パラメーター
<! - アップロードされたファイルのタイプを制限 - > <Interceptor-ref name = "defaultStack"> <! - 実行中のファイルの拡張機能を制限します - > <param name = "fileupload.allowedextensions"> txt、jpg、jar </param> <! - 実行中のファイルのタイプを制限[上記のように使用します] <param name = "fileupload.allowedtypes"> text/plain </param> - > </interceptor-ref>
2。ファイルをダウンロードします
Strutsファイルのダウンロード、2つの方法:
方法1:応答オブジェクトを介してバイトストリームデータをブラウザに書き込みます。ダウンロード2:strutsメソッドの応答ヘッダーメソッドを設定します
Strutsファイルをダウンロードしてください:
次のようにコードをコピーします。<result-type name = "stream"/>
まず、WebRootディレクトリに新しいアップロードフォルダーを作成し、ダウンロードしたフォルダーに提供するファイルを配置することに注意してください。
upload.xml
<action name = "down_*" method = "{1}"> <! - list display-> <result name = "list">/e/list.jsp </result> <! - operation-> <result name = "download" type = "stream"> <! - 実行中のファイルのタイプダウンロード:すべてのバイナリファイルタイプとして指定されています - >ストリームのプロパティを返します[実際にgetattrinputStream()] - > <param name = "inputName"> attrinputStream </param> <! - ダウンロードヘッダー、ブラウザによって表示されたファイル名 - > <contentDisposition "> attachment; filename = $ {downfileName} name = "buffersize"> 1024 </param> </result> </action>list.jsp
<body> <table align = "center"> <tr> <td> number </td> <td>ファイル名</td> <td>操作</td> </td> <%@tglib uri = "http://java.sun.com/jsp/jstl/core" varstatus = "vs"> <tr> <td> $ {vs.count} </td> <td> $ {filename} </td> <td> <! - url-> <c:url var = "url" value = "down_down"> <c:filename "filename" $ "> </c> </c> </c> <a href = "$ {url}">ダウンロード</a> </td> </tr> </c:foreach> </table> </body>ダウンアクション
/**ファイルのダウンロード*1。ダウンロードするすべてのファイルのリストを表示*2。ダウンロードするすべてのファイルのリストを表示******************************/public String list()throws Exception {//アップロードディレクトリパス文字列パス= servletactionContext.getServletContext()。 //ディレクトリオブジェクトファイル= new file(path); //すべてのファイルのファイル名を取得しますstring [] filenames = file.list(); // ActionContext AC = ActionContext.getContext()を保存します。 //リクエストを表すマップ(2番目の方法)マップ<string、object> request =(map <string、object>)ac.get( "request"); request.put( "filenames"、filenames); 「リスト」を返します。 } /****************** 2。ファイルのダウンロード*************************** // 1。 public void setFileName(string filename){//渡されたパラメーターの問題を処理します(get submission)try {filename = new String(filename.getBytes( "iso8859-1")、 "utf-8"); } catch(unsupportedencodingexception e){新しいruntimeexception(e); } // this.fileName = filename; } // 2。提出されたビジネスメソッド(struts.xmlでストリームを構成)をダウンロードしますパブリックストリングダウン()スロー例外{return "download"; } // 3。ファイルストリームを返す方法public inputstream getattrinputStream(){return servletactionContext.getServletContext()。getResourceasStream( "/upload/" + filename); } // 4。表示されたファイル名(ブラウザによって表示されたファイル名)をダウンロードしますpublic string getDownFileName(){//中国のエンコードが必要です{filename = urlencoder.encode(filename、 "utf-8"); } catch(unsupportedencodingexception e){新しいruntimeexception(e); } filenameを返します。 }}上記はこの記事に関するものです。すべての人の学習に役立つことを願っています。