Spring 图片上传

准备工作

  1. Tomcat虚拟地址映射

springmvc.xml

在springmvc.xml中配置文件上传解析器

<!-- 文件上传,id必须设置为multipartResolver -->
<bean id="multipartResolver"
	class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 设置文件上传大小 -->
	<property name="maxUploadSize" value="5000000" />
</bean>

HTML

<input name="img_input" type="file" accept="image/*"/>

JavaScript

    //上传头像
    $("body").on("change", "input[name='img_input']", upload);
    function upload(e) {
        var file = e.target.files[0]; //获取图片资源
        // 只选择图片文件
        if (!file.type.match('image.*')) {
            return false;
        }

        var reader = new FileReader();

        reader.readAsDataURL(file); // 读取文件

        // 渲染文件
        reader.onload = function (arg) {
            $($(e.target).siblings("img")[0]).attr("src", arg.target.result);
        }

        //上传到服务器
        var form_data = new FormData();
        var s = $(this)[0].files[0];

        // 把上传的数据放入form_data
        form_data.append("img", s);
      
        $.ajax({
            url: "<%=path%>/xxx/xxx/xxx",
            type: 'POST',
            cache: false,
            data: form_data,
            processData: false,
            contentType: false,
            async: false,
            success: function (data) {
                if (data.success) {
                    art.dialog({
                        title: "提示信息",
                        icon: "succeed",
                        width: "300",
                        content: "<span style='font-size:10pt;'>上传成功!</span>",
                        cancel: true,
                        cancelVal: "关闭"
                    });
                }
            }
        })
    }

Controller

    @Value("#{configProperties['imgUploadUrl']}")
    private String imgUpload;
    
    //上传头像
    @ResponseBody
    @RequestMapping("/userPortrain/uploadImg")
    public ResultStatus uploadImg(@RequestParam("img") MultipartFile pictureFile, HttpServletRequest request) throws IOException {
        // 图片上传
        // 设置图片名称,不能重复,可以使用uuid
        String picName = UUID.randomUUID().toString();
        // 获取文件名
        String oriName = pictureFile.getOriginalFilename();
        // 获取图片后缀
        String extName = oriName.substring(oriName.lastIndexOf("."));
        //图片名
        String fileName = picName + extName;
        // 开始上传
        pictureFile.transferTo(new File(imgUpload + fileName));

        //上传成功后更新数据库对象
        //此处省略
      
        return ResultStatus.success();
    }
Spring Boot中上传图片,可以使用Spring MVC的MultipartResolver来实现。具体步骤如下: 1. 配置MultipartResolver 在Spring Boot中,MultipartResolver已经默认配置好了,可以直接使用。如果需要自定义配置,可以在application.properties文件中添加以下配置: ``` spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB ``` 其中,max-file-size和max-request-size分别表示上传文件的最大大小和请求的最大大小。 2. 创建上传文件的表单 在HTML页面中创建一个表单,用于上传文件。表单需要添加enctype="multipart/form-data"属性,以支持文件上传。 ``` <form method="post" action="/upload" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3. 编写上传文件的控制器 在Spring Boot中,可以使用@RequestParam注解来获取上传的文件。控制器方法的参数中添加@RequestParam注解,并指定文件的名称,即可获取上传的文件。 ``` @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); // 获取上传的文件类型 String fileType = file.getContentType(); // 获取上传的文件大小 long fileSize = file.getSize(); // 上传文件的逻辑处理 ... return "upload success"; } ``` 4. 保存上传的文件 可以使用Java IO的API来保存上传的文件。可以使用FileOutputStream将文件输出到指定的路径中。 ``` @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); // 获取上传的文件类型 String fileType = file.getContentType(); // 获取上传的文件大小 long fileSize = file.getSize(); // 保存上传的文件 try { String filePath = "/path/to/save/file/" + fileName; FileOutputStream fos = new FileOutputStream(filePath); fos.write(file.getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } return "upload success"; } ``` 以上就是在Spring Boot中上传图片的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值