SpringMVCラーニング(四)------ファイルのアップロード

まず、ファイルアップロードプロセス

  1. ビルドファイル名
  2. 保存されたサーバーのファイルパスを設定します。
  3. 指定されたパスをダンプ

第二に、ケース

  1. 必要な構成のパッケージや瓶の紹介
    ここに画像を挿入説明
  2. 設定ファイルが用ファイルアップロードコンポーネントですSpringMVCを追加
<!--注册文件上传组件-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
  1. ファイルアップロード用のフォームを作成するためのページをImageupload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/admin/up.action" method="post" enctype="multipart/form-data">
    <p>图片:</p>
    <input type="file" name="upload">
    <input type="submit" value="上传">
</form>
</body>
</html>

  1. 新しいツールFileNameUtil.java utilsパッケージを作成し、ファイル名の処理を追加
package com.oracle.utils;

import java.util.UUID;

public class FileNameUtil {
	//根据UUID生成文件名去掉UUID之间的横杠
	public static String getUUIDFileName() {
		UUID uuid = UUID.randomUUID();
		return uuid.toString().replace("-", "");
	}
	//从请求头中提取文件名和类型
	public static String getRealFileName(String context) {
		// Content-Disposition: form-data; name="upload"; filename="a_left.jpg"
		int index = context.lastIndexOf("=");
		String filename = context.substring(index + 2, context.length() - 1);
		return filename;
	}
	//根据给定的文件名和后缀截取后缀
	public static String getFileType(String fileName){
		//9527s.jpg
		int index = fileName.lastIndexOf(".");
		return fileName.substring(index);

		//8b7cb153974c4947ad6934a3213dd1f4.jpg
	}
}

  1. ファイルを格納するためのWebディレクトリ内のパッケージ画像を作成します。
  2. 表示画面show.jspを作成します。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
图片:<img src="${pageContext.request.contextPath}/images/${imgname}">
</body>
</html>

  1. 新しいコントローラコンポーネント記述されたファイルアップロード方法の作成
    ImageUploadAction.javaを
package com.oracle.controller;

import com.oracle.utils.FileNameUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@Controller
@RequestMapping("/admin")
public class ImageUploadAction {
    @RequestMapping("/up")
    public  String up(@RequestParam MultipartFile upload, HttpServletRequest request){
        //构建文件名,使用UUID起名,使用原始文件的后缀
         String saveFileName= FileNameUtil.getUUIDFileName()+FileNameUtil.getFileType(upload.getOriginalFilename());
        System.out.println("构建的文件名字"+saveFileName);
         //指定服务器端存储路径
          String path=request.getServletContext().getRealPath("/images");
        System.out.println("服务器端存储路径"+path);
        //进行文件流转存 C:\Users\25717\Desktop\idea-workspace\springmvc_01\web\images\
        //try catch快捷键 ctrl+alt+t
        try {
            upload.transferTo(new File(path+saveFileName));
        } catch (IOException e) {
            e.printStackTrace();
        }

        request.setAttribute("imgname",saveFileName);
        return "show";
    }
}

  1. プロジェクト名の接尾辞を実行する前にウェブを変えたり、画像をファイルに保存することができません
    ここに画像を挿入説明
  2. プロジェクトを実行し、プロジェクトがデフォルトのindex.jspページにジャンプします、手動でimageupload.jsp実行する必要があり、登録springmvcサフィックスがアクションであるため、手動で変更JSPに必要なので、
    ここに画像を挿入説明ここに画像を挿入説明
  3. 結果を操作する。
    ここに画像を挿入説明[アップロード]をクリックします
    ここに画像を挿入説明ここに画像を挿入説明
公開された19元の記事 ウォンの賞賛6 ビュー1039

おすすめ

転載: blog.csdn.net/weixin_43288999/article/details/104691231