:ファイルのアップロード
文書のほとんどは、それゆえ、アップロード機能を実現するために、あなたはファイルアップロードフォームを提供する必要があり、フォームフォームをバックエンドサーバのアップロードに提出され、フォームは、次の3つの条件を満たしている必要があります。
1.formフォームメソッド属性はPOSTに設定されています。
フォームENCTYPEマルチパート/フォームデータへ2.formプロパティ。
3.の<input type = "ファイル" 名= "ファイル名" />ファイルアップロード入力ボックスを提供します。
以下のようにファイルアップロードフォームの例は以下のとおりです(複数のHTML5属性は複数ファイルのアップロードを可能にする、新しい属性です)
<from action "uploadUrl" method = "post" enctype = "multipart/form-data">
<input type = "file" name = "filename" multiple = "multiple"/>
<input type = "submit" value = "文件上传"/>
</from>
フォームの属性のenctypeマルチパート/フォームデータの形式は、ブラウザは、バイナリストリーム処理されたフォームデータを使用すると、サーバーは要求を処理するファイルの解析をアップロードします。Spring MVCのはMultipartResolverて、ファイルアップロード機能を実現します。ファイルアップロード機能を実現MultipartResolver。MultipartResolverインタフェースオブジェクトには、その実装クラスCommonsMultipartResolverを通じてファイルアップロード作業を完了する必要があります。
<プロパティ>をコードフォーマットとアップロードファイルサイズを可能にするように配置することにより、ファイルがCommonsMultipartResolverパーサクラス属性<property>要素を次のように構成することができます。
1.maxUploadSize:(バイト)アップロードされたファイルの最大長。
2.maxInMemorySize:キャッシュの最大サイズ。
3.defaultEncoding:デフォルトのエンコード形式を、
4.resolveLazily:コントローラでのファイルの例外を捕捉するために、文書の分析を延期。
注:実装内部CommonsMultipartResolver MultipartResolverインタフェースはmultipartResolverは完全な実装クラスのオブジェクトとファイルの解析を取得した文字列への参照であることをクラスなのでmultipartResolverにCommonsMultipartResolverを設定するとき、あなたはIDビーンを指定する必要があります。
CommonsMultipartResolverは、Apache CommonsのするFileUpload技術によってSpring MVCの内部にあるので、Spring MVCのファイルアップロードコンポーネントはまた、ApacheのコモンズのFileUploadに依存しているので、関連のJARパッケージをインポートするために、その必要性は、ファイルのアップロードをサポートしています。
2:実装ファイルのダウンロード
ファイルのダウンロードは、Spring MVCの環境では、ローカルマシン上のファイルサーバにファイルをダウンロードすることで、ファイルのダウンロードには、次の2つのステップに分けることができます。
ハイパーリンクを使用して、クライアントファイルのダウンロードページ1.、方法の背景とファイル名を指定したファイルをダウンロードするためのリンクのhref属性(ファイルのダウンロードディレクトリ内の名前「1.JPG」ファイルを追加する必要があります)
<a href = "${pageContext.request.contextPath}/downloads?filename = 1.jpg">
文件下载
</a>
背景ResponseEntity Spring MVCのは、それが簡単にリターンHttpHeadersはhttpStatusオブジェクトとオブジェクトを定義することができます使用して、完全なファイルのダウンロードを提供して、オブジェクトの型を使用し、これらの二つのオブジェクトは、ファイルをダウンロードするときに必要な設定情報を完了するように設定されています。
@RequestMapping("/download")
public ResponseEntity<byte[]>fileDownload(HttpServletRequest request,String filename)throws Exception{
String path = request.getServletContext().getRealPath("/upload/");
File file = new File(path + File.separator + filename);
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment", filename);
headers.setContentType(Media Type.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(fileUtils.readFileToByteArray(file),headers,HttpStatus.OK);
}
ヘッダ情報に応じて、バイナリストリームにダウンロードデータをもMIMEタイプとして知らInternerメディアタイプメディアタイプ(すなわち、メディアタイプ)、アプリケーション/オクテットストリーム、すなわちのメディアType.APPLICATION_OCTET_STREAM値を表します。
httpStatusのHTTPプロトコル、例HttpStatus.OKの種類表現200の状態を表している、すなわち、サーバが正常に要求を処理しました。