SSM学习之路——springMVC第二天_上传文件到服务器

一、添加依赖

上传文件所需要的jar包,在maven项目下只需要添加依赖

<dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

二、编写代码

index.jsp:
注意此处的文件表单的name=“upload”,和下面的文件解析器对象名称要相同

<form action="upload/testUpload" method="post" enctype="multipart/form-data">
    选择文件:<input type="file" name="upload"><br>
    <input type="submit" value="上传">
</form>

uploadController:
第二个参数MultipartFile的形参upload,对应的是文件表单的name属性。
一定要相同

@Controller
@RequestMapping("upload")
public class uploadController {
	
    @RequestMapping("testUpload")
    public String testUpload(HttpServletRequest request, MultipartFile upload) throws IOException {
        System.out.println("testUpload方法执行了");
        //获取服务器路径,存入下面的upload子文件夹下
        String path = request.getSession().getServletContext().getRealPath("/upload");
        //根据目录新建这个文件夹
        File file = new File(path);
        //如果该文件夹不存在,创建该文件夹
        if (!file.exists()){
            file.mkdir();
        }
        //获取解析后该文件的文件名
        String fileName = upload.getOriginalFilename();
        //获取一个唯一指定的UUID,防止出现重复
        String uuid = UUID.randomUUID().toString().replace("-","").trim();
        fileName = uuid + "_" + fileName;
        //上传文件
        upload.transferTo(new File(path,fileName));
        //为了看看上传后的路径和文件名
        System.out.println(path);
        System.out.println(fileName);
        //执行成功则转向success.jsp页面
        return "success";
    }
}

三、配置文件解析器对象

文件解析器对象的id必须要是multipartResolver。

<bean  id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!--指定最大的上传大小,value以B为单位,如10M就是10*1024KB*1024B-->
        <property name="maxUploadSize" value="10485760"></property>
        <!--文件的默认编码-->
        <property name="defaultEncoding" value="UTF-8"></property>
    </bean>

运行结果:
上传了两次名为数据库属性的图片,可以看到由于唯一的uuid,所以不会出现覆盖的情况。
在这里插入图片描述

发布了31 篇原创文章 · 获赞 0 · 访问量 1215

猜你喜欢

转载自blog.csdn.net/SixthMagnitude/article/details/104317322