springmvc-----图片上传

点滴记载,点滴进步,愿自己更上一层楼。

图片上传,首先需要两个上传图片的jar包,添加到pom中。

    <!-- 图片上传相关 start -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.2</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <!-- 图片上传相关 end -->
然后配置springmvc对应的图片上传的解析器等。

springmvc.xml添加如下代码。

    <!-- 文件上传 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置图片上传最大尺寸 -->
        <property name="maxUploadSize">
            <!-- 5M -->
            <value>52428880</value>
        </property>

    </bean>

图片上传,form表单必须设置属性    enctype="multipart/form-data"

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page isELIgnored="false"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%-- enctype="multipart/form-data" 文件上传必须有这个 --%>
<form action="${pageContext.request.contextPath}/testImgUpload" method="post" enctype="multipart/form-data">
    姓名:<input type="text" name="name" value="${imageTestVo.name}"><br/><br/>
    年龄:<input type="text" name="age" value="${imageTestVo.age}"><br/><br/>
    <c:if test="${imageTestVo.img_src != null && imageTestVo.img_src != ''}">
        <img src="/pic/${imageTestVo.img_src}" width="100px",height="100px">
    </c:if>
    头像:<input type="file" name="pic_src" ><br/><br/>
    <input type="submit"  value="submit"><br/><br/>
</form>

</body>
</html>
idea设置对应的图片存储路径。

建好自己的存储图片的文件夹,我的   D:\java\myProject\pictmp

idea配置。

第一步打开tomcat配置界面。

切换到Deployment   tab

然后选择自己存放图片的位置。

最后 application context那里填写pic   那个斜杠最好别去掉。注意上面的jsp的img路径跟这里的根路径是对应的,别设置错了。


到此tomcat存放图片虚拟目录设置完毕。

编写一个vo   ImageTestVo.java

package com.soft.po;

/**
 * Created by xuweiwei on 2017/8/20.
 */
public class ImageTestVo {
    private String name;
    private Integer age;
    private String img_src;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getImg_src() {
        return img_src;
    }

    public void setImg_src(String img_src) {
        this.img_src = img_src;
    }
}
对应的controller信息。  用MultipartFile来接收图片信息。  参数名字必须跟form中的名字对应。
package com.soft.controller;

import com.soft.po.ImageTestVo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import java.io.File;
import java.util.UUID;

/**
 * Created by xuweiwei on 2017/8/20.
 */
@Controller
public class TestImageController {

    @RequestMapping(value="/toImgUpload")
    public ModelAndView toImgUpload(ImageTestVo imageTestVo){
        ModelAndView model = new ModelAndView();
        // 将传入绑定成功的参数在页面显示。
        model.setViewName("test/testImageUpload");
        return model;
    }

    @RequestMapping(value="/testImgUpload")
    public ModelAndView testImgUpload(ImageTestVo imageTestVo, MultipartFile pic_src){
        String originalFilename = pic_src.getOriginalFilename();
        if(pic_src != null && originalFilename !=null && originalFilename.length()>0){
            String filePath = "D:\\java\\myProject\\pictmp\\";
            String newFileName = UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
            File newFile = new File(filePath+newFileName);
            try{
                pic_src.transferTo(newFile);
            }catch (Exception e){

            }
            imageTestVo.setImg_src(newFileName);
        }
        ModelAndView model = new ModelAndView();
        model.addObject("imageTestVo",imageTestVo);
        // 将传入绑定成功的参数在页面显示。
        model.setViewName("test/testImageUpload");
        return model;
    }
}
配置完毕,开始测试。

首先进入到图片上传的jsp。

填写信息,选择图片。


点击提交,到后台。

前台回显


查看本地文件夹已经存在了刚才上传的图片。



到此上传图片结束。

主要点就是:

  1 导入jar依赖,

  2 配置图片解析器,

 3 jsp  form提交表单的enctype="multipart/form-data"设置,

 4 用MultipartFile来接收图片信息。  参数名字必须跟form中的名字对应。

 5 设置本地的存图片路径


点滴记载,点滴进步,愿自己更上一层楼。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值