springmvc文件上传

图片虚拟目录
  • 虚拟目录的配置
    将图片上传到固定的物理目录下,通过虚拟目录 访问物理目录 下的图片。

在tomcat上配置虚拟目录,访问虚拟目录可以访问虚拟目录对应物理目录
这里写图片描述
上边配置方式通过直接修改tomcat 下conf/server.xml文件配置虚拟目录:
这里写图片描述

配置解析器

因为springmvc是通过一个Multipart解析器实现文件上传的,所以需要配置解析器
这里写图片描述
配置完之后还需要上传的Io的jar包

加入CommonsMultipartResolver解析器依赖的jar包

CommonsMultipartResolver解析器依赖commons-fileupload和commons-io,加入如下jar包:
这里写图片描述

springmvc实现上传

在controller方法形参上添加MultipartFile类型的参数,参数名称和上传页面上file的名称一致,才可以绑定成功。
实现代码:

// 更新商品你信息
@RequestMapping(value = "/updateItems")
public String updateItems(ItemsCustom itemsCustom, MultipartFile picture)
        throws Exception {

    // 实现文件上传---判断文件是否存在-----getOriginalFilename获取文件名称加后缀--文件的全名称
    if (picture != null && picture.getOriginalFilename() != null
            && !picture.getOriginalFilename().equals("")) {
        // 获取文件的原名称
        String originalFilename = picture.getOriginalFilename();

        // 获取文件的后缀
        String houzhuiFilename = originalFilename
                .substring(originalFilename.lastIndexOf("."));

        // 设置文件的新名称----为避免重复,使用uuid
        String newFilename = UUID.randomUUID().toString() + houzhuiFilename;

        // 创建新文件
        File newFile = new File("F:\\my_workspace\\" + newFilename);

        // 将文件写入磁盘
        picture.transferTo(newFile);

        // 更新新文件名到数据库中
        itemsCustom.setPic(newFilename);
    }

    // 调用service更新商品---这里调用逆向工程生成的mapper
    itemsMapper.updateByPrimaryKey(itemsCustom);

    // 请求转发到查询商品页面
    return "forward:queryItems.action";
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

注意:
实现文件上传,需要满足三个条件
1.post提交方式
2.在form中指定multipart编码格式:enctype=”multipart/form-data”
3.form中有一个文件上传的标签,且此标签中的属性name与controller中对应方法上的对应参数名称相同

注意!!!!!

如果form表单上添加enctype=”multipart/form-data”,而springmvc.xml中没有配置multipart解析器,此时其它类型参数(pojo,基本类型)都不能绑定成功。
所以,主要只要form中有enctype=”multipart/form-data”配置,必须要springmvc.xml中配置multipart解析器

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值