SpringMVC上传之方式第一种使用文件方式

举报
tea_year 发表于 2022/02/20 00:27:17 2022/02/20
【摘要】 ****文件上传 上传到哪里?服务器文件上传前提条件A form 表单的 enctype 取值必须是:multipart/form-data(默认值是:application/x-www-form-urlencoded)enctype:是表单请求正文的类型B method 属性取值必须是 PostC 提供一个文件选择域<input type=”file” />客户端发送请求到达前端控...
    ****文件上传 

上传到哪里?服务器

  1. 文件上传前提条件
    A form 表单的 enctype 取值必须是:multipart/form-data
    (默认值是:application/x-www-form-urlencoded)
    enctype:是表单请求正文的类型
    B method 属性取值必须是 Post
    C 提供一个文件选择域<input type=”file” />
    image.png
    客户端发送请求到达前端控制器,–》文件解析器—》返回给前端控制器–》Controller中文件上传的方法。
    image.png
    控制器操作:需要将表单中的数据存储到数据库,不能直接存图片,需要存储图片的路径。

配置文件解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
      <property name="maxUploadSize" value="10485760"></property>
</bean>`

4. 上传方式(本地服务器)

图片的回显
<img src="" id="foo" width="200px" height= "300px"/>
<!--multiple  规定允许用户输入到input 元素的多个值-->
<input type="file" name="" id="bar" accept="image/*" multiple="multiple"/>
<script type="text/javascript">
    bar.onchange = function(){
        //1.创建一个文件读取对象
        var r = new FileReader();
        //2.读取input文件框中选中的文件
        r.readAsDataURL(bar.files[0]);
        //3.将读取的结果赋值给img标签的src属性
        r.onload = function(){
            foo.src = r.result;
        }
    }
</script>`

前端页面的代码参考如下所示:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>上传图片</title>
</head>
<body>
    <form  action="fileupload1" method="post" enctype="multipart/form-data">
        文件<input type="file" name="file"><br>
        <button type="submit">上传</button>
    </form>
</body>
</html>
后端控制器代码参考如下所示:
package com.aaa.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Controller
public class UploadController {
    @RequestMapping("fileupload1")
    public ModelAndView upload(MultipartFile file, HttpServletRequest request){
        String path=request.getSession().getServletContext().getRealPath("/uploads");
        System.out.println("路径:"+path);
        //通过上传到页面的地址来上传信息;
        File f=new File(path);
        if(!f.exists())
            f.mkdir();
        String filename=file.getOriginalFilename();
        System.out.println(filename);
        //2.UUID,设置文件名;
        filename+= UUID.randomUUID().toString()+filename;
        //发现aaa.jpg出来了.覆盖上传;
        File newFile=new File(path,filename);
        try {
            file.transferTo(newFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //2显示到页面;
        ModelAndView mv=new ModelAndView();
        mv.addObject("path","/"+filename);
        mv.setViewName("test");;
        return mv;
    }
    @RequestMapping("/test")
    public String test(){
        return "test";
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。