ファイルアップロード(アップロード)
WebMVC モジュールは、ファイルのアップロード処理とアップロードされたファイルの操作を非常に簡単に行うことができます。
@FileUpload: コントローラー メソッドがアップロードされたファイル ストリームを処理する必要があることを宣言します。
パラメーターはありません。 , 注意が必要なのは、ファイルのアップロード処理のフォーム enctype 属性です:
<form action="/demo/upload" method="POST" enctype="multipart/form-data"> ...... </form>
IUploadFileWrapper: アップロードされたファイルを操作するための一連のメソッドを提供するアップロード ファイル ラッパー インターフェイスです。
サンプル コード:
@Controller @RequestMapping("/demo) public class UploadController { // 处理单文件上传 @RequestMapping(value = "/upload", method = Type.HttpMethod.POST) @FileUpload public IView doUpload(@RequestParam IUploadFileWrapper file) throws Exception { // 获取文件名称 file.getName(); // 获取文件大小 file.getSize(); // 获取完整的文件名及路径 file.getPath(); // 获取文件Content-Type file.getContentType(); // 转移文件 file.transferTo(new File("/temp", file.getName())); // 保存文件 file.writeTo(new File("/temp", file.getName()); // 删除文件 file.delete(); // 获取文件输入流对象 file.getInputStream(); // 获取文件输出流对象 file.getOutputStream(); return View.nullView(); } // 处理多文件上传 @RequestMapping(value = "/uploads", method = Type.HttpMethod.POST) @FileUpload public IView doUpload(@RequestParam IUploadFileWrapper[] files) throws Exception { // ...... return View.nullView(); } }
ファイル アップロード関連の設定パラメータ:
#------------------------------------- # 文件上传配置参数 #------------------------------------- # 文件上传临时目录,为空则默认使用:System.getProperty("java.io.tmpdir") ymp.configs.webmvc.upload_temp_dir= # 上传文件大小最大值(字节),默认值:-1(注:10485760 = 10M) ymp.configs.webmvc.upload_file_size_max= # 上传文件总量大小最大值(字节), 默认值:-1(注:10485760 = 10M) ymp.configs.webmvc.upload_total_size_max= # 内存缓冲区的大小,默认值: 10240字节(=10K),即如果文件大于10K,将使用临时文件缓存上传文件 ymp.configs.webmvc.upload_size_threshold= # 文件上传状态监听器,可选参数,默认值为空 ymp.configs.webmvc.upload_file_listener_class=
ファイル アップロード ステータス リスナー (upload_file_listener_class) 設定:
WebMVC モジュールのファイル アップロードは Apache Commons FileUpload コンポーネントに基づいているため、独自に提供される ProgressListener インターフェイスは、ファイルのアップロード ステータスを監視するために使用できます。
サンプル コード: アップロードされたファイルの進行状況の計算を実装します。
インターフェイス実装クラスを ymp.configs に設定します。 webmvc.upload_file_listener_class パラメータ ;
- Ajax 時間指定ラウンドロビン方式を通じてセッションの進行状況値を取得し、ページに表示します;