使用SpringMVC框架实现文件上传功能

一、导入依赖

<!-- 文件上传包 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<!-- io包 -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

二、编写提交表单

在表单中添加enctype="multipart/form-data"属性值
encodetype:编码类型
multipart/form-data是指表单数据有多部分构成 既有文本数据 又有文件等二进制数据
默认情况下enctype的值是application/x-www-form-urlencoded 不能用于文件上传 只有使用了multipart/form-data才能完整传递文件数据
application/x-www-form-urlencoded只能上传文本格式的文件
multipart/form-data将文件以二进制的形式上传 可以上传多种格式的文件

三、配置SpringMVC配置文件

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 手动指定文件的信息 -->
    <!-- 默认编码 -->
    <property name="defaultEncoding" value="utf-8"/>
    <!-- 最大上传大小 单位:kb -->
    <property name="maxUploadSize" value="10240000"/>
    <!-- uploadTempDir虚拟地址 需要上传文件的时候必须配置该属性 -->
    <!--<property name="uploadTempDir"/>-->
</bean>

四、配置文件上传的Controller控制器

以上传图片为例

// 用常量保存路径
private static final String UPLOAD_PATH="F:\\IdeaProjects\\filetest\\";

@RequestMapping("/uploadPic.do")
public ModelAndView uploadPic(MultipartFile uploadPic) throws IOException {
    // 用UUID生成随机文件名
    UUID uuid=UUID.randomUUID();
    long id = uuid.getLeastSignificantBits();

    // 获取图片名称
    String filename = uploadPic.getOriginalFilename();
    // 获取后缀名
    String suffix = filename.substring(filename.lastIndexOf("."));

    // 文件在服务器上的存储位置
    // File(文件地址+文件名+后缀名) 绝对路径 精确到图片名称
    File file=new File(UPLOAD_PATH+id+suffix);
    uploadPic.transferTo(file);

    // 页面的跳转 文件地址的回显
    return new ModelAndView("upload","upload_file_path",file.getName());
}

至此 一个最基本的文件上传功能就实现了
当然 实际开发中还远远不止如此 后端还会将文件路径存储于数据库中 在前端也会进行优化 比如实现预览功能 如果是图片的话还会有图片尺寸调节功能等等


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值