[Servlet&JSP] Chap 12. ファイルアップロード実装ロジック(MVC 2モード)
5925 ワード
準備:cos.jarファイルをWebContent/WEB-INF/libフォルダにコピーする
COSライブラリ:http://www.servlets.com/cos/
ファイルのデータは通常のString形式ではなくバイナリ形式であるため、enctタイプ(符号化タイプ)をmultipart/form-data形式 に変換する必要がある. multipart/form-data: ファイルは、ネットワーク上で大容量ファイルを一度に送信できないため、通常配布されます. multipart、ファイル形式でスライス送信を表す
cos.jarライブラリサーブレットによるマルチリクエストクラスの提供
生成者
MultipartRequest multi = new MultipartRequest(request, saveDirectiory, maxPostSize, encoding, policy);
request:multipartRequestに関連付けるrequestオブジェクト
saveDirectory:サーバ側に格納されているパス
maxPostSize:最大ファイルサイズ
エンコーディング:ファイルのエンコーディング方法(ファイル名が韓国語の場合、パラメータ値をutf-8に縮小)
policy:ファイル繰返し処理に使用するパラメータ
policyは、「b.bmp」ファイルがアップロードされ、同じファイルが再アップロードされると「b 1」となる繰り返し処理を提供するパラメータです.bmp"等自動繰返しファイル処理
パラメータ値は「new DefaultFileRenamePolicy()」を使用します.
getparameterName():フォームに転送されたパラメータの名前をEnumerationタイプに戻します.
getParameterValue():フォームから受信したパラメータを配列として受信します.
getParameter():オブジェクト内の対応するパラメータの値を取得します.
getFileNames():複数のファイルをアップロードするときに、これらの値を「顧客タイプ」に戻します.
getFilesystemName():実際にサーバにアップロードされたファイルの名前を示します.
getOriginalFilename():クライアントがアップロードしたファイルのソース名を表します
getContentType():アップロードファイルを取得するためのコンテンツタイプ
getFile():サーバにアップロードされたファイルの情報をオブジェクトとして取得します.
index.jsp ファイルアップロードページ->FileUploadPageをクリックします.jsp
fileUploadPage.jsp フォームタグ符号化enctype="multipart/form-data" 入力ラベル(type=file,submit) を作成するファイルのアップロード中にイベントが発生しました(onchange) ファイルサイズ(file.file[0].size)(小数点3桁:file Size.toFixed(3) を生成する.
submitクリックイベントが発生しました 寸法検証後true or falseを再試行 正常時:FileUploadServicelet.Java(/file/file Upload.do) を移動異常:通知を表示し、X を移動する
FileUploadServlet.java (/file/fileUpload.do) ファイルアップロードを実現するには、COSライブラリを使用する必要があります. COSライブラリは、複数のリクエストオブジェクトを提供します.
MultipartRequestオブジェクトを作成するには、次の5つの値が必要です.
1)要求オブジェクト(サーブレット提供)
2)実際にアップロードするパスを設定する(FilePath) バイト ex) request.getServletContext().getRealPath("/upload") 3)最大ファイルサイズ設定値 ex) int uploadFileSizeLimit = 1024 1024 1024; 4)ファイル名の符号化処理値 ex) String encType="UTF-8"; 5)ポリシーに関連するオブジェクト(同名ファイルをアップロードするときにどのように処理されるポリシーに関連するオブジェクト) ex)DefaultFilenRenamePolicyオブジェクトを使用すると、重複ファイル名を持つファイルがアップロードされると、自動的に重複ファイルの後に数字が追加されて処理されます. ex) test.txtをアップロードしてからtextを再入力します.txtという名前のファイルをアップロードすると、2番目にアップロードされたファイルは自動的に1をテストします.txtという名前のポリシー 複数の信頼オブジェクトの作成時に を設定します.
複数部分リクエストオブジェクトの作成 ex複数要求複数=新規複数要求(要求、パス、サイズ、符号化、新規DefaultFileRenamePolicy()
ファイルサイズの確認 ファイルオブジェクト を作成ファイルサイズ(長さ()が50 MBより大きい場合、ファイルオブジェクトを削除し、JSPファイルに移動してアラートを発行し、DoGetメソッド を停止する.
データベースにデータを保存する情報の設定
1)インポート元ファイル名
String originalFileName= multi.getFilesystemName("file");
2)ユーザー名のアップロード
String fileUser= ((Member)request.getSession().getAttribute("member")).getUserId();
3)アップロード時間(Calendar Class)
long currentTime =Calendar.getInstance().getTimeInMillis();
4)アップロード時間(import java.sql.Timestamp;)を実現するフォーマットを指定します.
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
Timestamp uploadTime = Timestamp.valueOf(formatter.format(currentTime));
5)変更後のファイル名の保存(import java.io.File;)
File file = new File(uploadFilePath+"\"+originalFileName);
file.renameTo(new File(uploadFilePath+"\"+fileUser+""+currentTime+"_kh"));
ファイル名をユーザー名に変更するアップロード時間kh
String changedFileName= fileUser+""+currentTime+"_kh";
6)ファイルを保存するパス(変更したファイル名)
String filePath=uploadFilePath+"\"+changedFileName;
7)ファイルサイズ(ファイルサイズが大きい場合はlong typeを使用)
File reFile=new File(filePath);
long fileSize= reFile.length(); データオブジェクトにおけるビジネスロジック処理(<>サービス<>DAO) の戻り値を受け取り、戻り値に基づいて要求値を設定し、FileUpload.jsp に移動
fileUpload.jsp の要求値に従って通知を発行し、FileUploadPageを発行します.jsp に移動
COSライブラリ:http://www.servlets.com/cos/
デフォルトのファイルアップロードラベル
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file">
</form>
MultipartRequestクラス
cos.jarライブラリサーブレットによるマルチリクエストクラスの提供
生成者
MultipartRequest multi = new MultipartRequest(request, saveDirectiory, maxPostSize, encoding, policy);
request:multipartRequestに関連付けるrequestオブジェクト
saveDirectory:サーバ側に格納されているパス
maxPostSize:最大ファイルサイズ
エンコーディング:ファイルのエンコーディング方法(ファイル名が韓国語の場合、パラメータ値をutf-8に縮小)
policy:ファイル繰返し処理に使用するパラメータ
policyは、「b.bmp」ファイルがアップロードされ、同じファイルが再アップロードされると「b 1」となる繰り返し処理を提供するパラメータです.bmp"等自動繰返しファイル処理
パラメータ値は「new DefaultFileRenamePolicy()」を使用します.
役に立つ方法
getparameterName():フォームに転送されたパラメータの名前をEnumerationタイプに戻します.
getParameterValue():フォームから受信したパラメータを配列として受信します.
getParameter():オブジェクト内の対応するパラメータの値を取得します.
getFileNames():複数のファイルをアップロードするときに、これらの値を「顧客タイプ」に戻します.
getFilesystemName():実際にサーバにアップロードされたファイルの名前を示します.
getOriginalFilename():クライアントがアップロードしたファイルのソース名を表します
getContentType():アップロードファイルを取得するためのコンテンツタイプ
getFile():サーバにアップロードされたファイルの情報をオブジェクトとして取得します.
ファイルアップロード実装ロジック
index.jsp
fileUploadPage.jsp
FileUploadServlet.java (/file/fileUpload.do)
MultipartRequestオブジェクトを作成するには、次の5つの値が必要です.
1)要求オブジェクト(サーブレット提供)
2)実際にアップロードするパスを設定する(FilePath)
複数部分リクエストオブジェクトの作成
ファイルサイズの確認
データベースにデータを保存する情報の設定
1)インポート元ファイル名
String originalFileName= multi.getFilesystemName("file");
2)ユーザー名のアップロード
String fileUser= ((Member)request.getSession().getAttribute("member")).getUserId();
3)アップロード時間(Calendar Class)
long currentTime =Calendar.getInstance().getTimeInMillis();
4)アップロード時間(import java.sql.Timestamp;)を実現するフォーマットを指定します.
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
Timestamp uploadTime = Timestamp.valueOf(formatter.format(currentTime));
5)変更後のファイル名の保存(import java.io.File;)
File file = new File(uploadFilePath+"\"+originalFileName);
file.renameTo(new File(uploadFilePath+"\"+fileUser+""+currentTime+"_kh"));
ファイル名をユーザー名に変更するアップロード時間kh
String changedFileName= fileUser+""+currentTime+"_kh";
6)ファイルを保存するパス(変更したファイル名)
String filePath=uploadFilePath+"\"+changedFileName;
7)ファイルサイズ(ファイルサイズが大きい場合はlong typeを使用)
File reFile=new File(filePath);
long fileSize= reFile.length();
Reference
この問題について([Servlet&JSP] Chap 12. ファイルアップロード実装ロジック(MVC 2モード)), 我々は、より多くの情報をここで見つけました https://velog.io/@woody_/ServletJSP-Chap-12.-파일-업로드-구현-로직MVC2-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol