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.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解析器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值