springmvc文件上传

springMVC文件上传

1.前端文件的上传

1.1条件

文件上传的要求:

1.前端: 使用

2.对表单要求

​ 1) method必须是post, 不能是get, 请求参数通过url传递数据, 文件无法在url传递,get提交方式数据限制大小

​ 2) form标签的enctype属性(请求参数传递给后台需要进行怎样的编码), multipart/form-data

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XXcqtAqY-1642520692522)(D:/Desktop/java8/springMVC/笔记/笔记5/image-20211129090136900.png)]

2.后端对文件的下载

2.1配置文件

导入依赖:

<!--文件上传-->
<dependency>
 <groupId>commons-fileupload</groupId>
 <artifactId>commons-fileupload</artifactId>
 <version>1.4</version>
</dependency>

在SpringMVC的配置文件中.配置一个文件上传的组件

 <!--配置文件上传解析器
        注意: id值一定是multipartResolver
    -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置最大的上传文件大小 :10M    = 10 *1024*1024 B
           单位 字节
        -->
        <property name="maxUploadSize" value="10485760"></property>
    </bean>

2.2编写controller

package com.fiction.contraller;

import com.fiction.constant.ResponseData;
import com.fiction.constant.ResponseDataUtil;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@Controller
@ResponseBody
@RequestMapping("/up")
public class UpImg {

    @RequestMapping("/load")
    public ResponseData upImg(MultipartFile images){
        //把上传的文件保存到服务器的硬盘  d:/upload
        String  savePath = "D:/upload";
        File savePathFile = new File(savePath);
        if(!savePathFile.exists()){ //不存在
            //创建目录
            savePathFile.mkdirs();
        }

        //上传文件名问题:   系统分配, 文件名唯一   1) UUID  2) 时间戳   3) 用户名+时间戳   用户名+uuid+时间戳
        //后缀名: 上传文件的后缀名, 得到上传文件名  getName()  获取请求参数名   getOriginalFilename() 获取上传的文件名
        String uploadFileName = images.getOriginalFilename();
        String suffix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
        String saveFileName =System.currentTimeMillis()+suffix;
        File saveFile = new File(savePathFile,saveFileName);

        //transferTo(File)
        //保存文件
        try {
            images.transferTo(saveFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ResponseDataUtil.buildOk("文件上传成功");
    }
}

3.前端对后端文件的请求

3.1配置访问的位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OJ0ETGLs-1642520692531)(D:\md\images\springMVC\springmvc文件上传\p1.png)]

选择External Source 选择自己存储文件的位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qHrqZrAc-1642520692533)(D:\md\images\springMVC\springmvc文件上传\p2.png)]

访问途径http://127.0.0.1:tomcat端口号/路径/图片名称

http://127.0.0.1:8080/mybatis/p1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值