ホームページ > 記事 > ウェブフロントエンド > SpringMVCファイルアップロード方法(コード)の紹介
この記事では、SpringMVC のファイルアップロード方法 (コード) を紹介します。参考になる内容です。困っている方は参考にしてください。お役に立てれば幸いです。
SpringMVC は、プラグアンドプレイ MultipartResolver を使用して実装されるファイル アップロードの直接サポートを提供します。 SpringMVC は、Apache Commons FileUpload テクノロジーを使用して、MultipartResolver 実装クラス CommonsMultipartResolver を実装します。したがって、SpringMVC のファイルアップロードも Apache Commons FileUpload コンポーネントに依存する必要があります。
1. pom 依存関係を追加します
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency>
2. 設定ファイルのアップロード Bean
Spring MVC 設定ファイルに 1 つ追加しますファイルアップロードBean。
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> </bean>
3. ファイルのアップロード
ファイルのアップロードは、プロジェクト開発で最も一般的な機能です。ファイルをアップロードするには、フォーム メソッドを POST に設定し、enctype を multipart/form-data に設定する必要があります。この場合のみ、ブラウザはユーザーが選択したファイルをバイナリ データとしてサーバーに送信します。
アップロードファイルインターフェース:upload_form.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>文件上传</title> </head> <body> <!-- 上传单个对象 注意表单的method属性设为post,enctype属性设为multipart/form-data --> <form method="POST" action="/SpringMVCDemo1/upload" enctype="multipart/form-data"> <input type="file" name="file" /><br/><br/> <input type="submit" value="上传" /> </form> <!-- 上传多个对象 注意表单的method属性设为post,enctype属性设为multipart/form-data --> <form method="POST" action="/SpringMVCDemo1/uploadMultiFiles" enctype="multipart/form-data"> <p>文件1:<input type="file" name="file" /></p> <p>文件2:<input type="file" name="file" /></p> <p>文件3:<input type="file" name="file" /></p> <!-- 同时传递其他业务字段 --> <p>用户名:<input type="text" name="userName" /></p> <p>密码:<input type="password" name="password" /></p> <p><input type="submit" value="上传" /></p> </form> </body> </html>
アップロード結果返却インターフェース:upload_result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2>上传结果为:${message}</h2> </body> </html>
注: 事前にファイルを格納するフォルダーを作成してください たとえば、私のパスは「D:staticResourcesTestimgupload」です。
FileController.java
@Controller @RequestMapping("/SpringMVCDemo1") public class FileController { /** * 跳转到上传页面 * @GetMapping 是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。 */ @GetMapping("/gotoUploadForm") public String index() { return "/upload_form.jsp"; } /** * 上传单个文件 * 通过MultipartFile读取文件信息,如果文件为空跳转到结果页并给出提示; * 如果不为空读取文件流并写入到指定目录,最后将结果展示到页面 * @param multipartFile * @PostMapping 是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。 */ @PostMapping("/upload") public String uploadSingleFile(@RequestParam("file") MultipartFile multipartFile, HttpServletRequest request){ if (multipartFile.isEmpty()){ request.setAttribute("message", "Please select a file to upload '"); return "/upload_result.jsp"; } try { String contentType = multipartFile.getContentType(); String originalFilename = multipartFile.getOriginalFilename(); byte[] bytes = multipartFile.getBytes(); System.out.println("上传文件名为-->" + originalFilename); System.out.println("上传文件类型为-->" + contentType); System.out.println("上传文件大小为-->"+bytes.length); //filePath为存储路径 String filePath = "d:/staticResourcesTest"; System.out.println("filePath-->" + filePath); //存储在staticResourcesTest下的imgupload文件夹下 File parentPath = new File(filePath, "imgupload"); System.out.println("上传目的地为-->"+parentPath.getAbsolutePath()); try { File destFile = new File(parentPath,originalFilename);//上传目的地 FileUtils.writeByteArrayToFile(destFile,multipartFile.getBytes()); } catch (Exception e) { e.printStackTrace(); } request.setAttribute("message", "You successfully uploaded '" + multipartFile.getOriginalFilename() + "'"); } catch (IOException e) { e.printStackTrace(); } return "/upload_result.jsp"; } /** * 上传多个文件,同时接受业务数据 * @param origFiles * @param request * @param user * @return */ @PostMapping("/uploadMultiFiles") public String uploadMultiFiles(@RequestParam("file") List<MultipartFile> origFiles, HttpServletRequest request, User user) { //User为实体类 System.out.println("User=="+user); if (origFiles.isEmpty()) { request.setAttribute("message", "Please select a file to upload '"); return "/upload_result.jsp"; } try { for (MultipartFile origFile : origFiles) { String contentType = origFile.getContentType(); String fileName = origFile.getOriginalFilename(); byte[] bytes = origFile.getBytes(); System.out.println("上传文件名为-->" + fileName); System.out.println("上传文件类型为-->" + contentType); System.out.println("上传文件大小为-->"+bytes.length); String filePath = "d:/staticResourcesTest"; System.out.println("上传目的地为-->"+filePath); try { //上传目的地(staticResourcesTest文件夹下) File destFile = new File(filePath,fileName); FileUtils.writeByteArrayToFile(destFile,origFile.getBytes()); } catch (Exception e) { e.printStackTrace(); } } request.setAttribute("message", "You successfully uploaded '"); } catch (IOException e) { e.printStackTrace(); } return "/upload_result.jsp"; } }
この記事はここで終了しました。その他の興味深いコンテンツについては、PHP 中国語 Web サイトの Java チュートリアル ビデオ 列に注目してください。
以上がSpringMVCファイルアップロード方法(コード)の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。