zoukankan      html  css  js  c++  java
  • SSM+form表单文件上传

    这里介绍SSM如何配置上传文件

    配置springmvc.xml:

      <!--配置上传下载-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver" />

    以及在WEB-INF下面的web.xml配置文件的相关设置

    <servlet>节点里面
    -1表示默认
     <!--配置上传文件大小-->
        <multipart-config>
          <max-file-size>-1</max-file-size>
          <max-request-size>-1</max-request-size>
          <file-size-threshold>0</file-size-threshold>
        </multipart-config>

    然后来个添加图片的示例

    Controller

     
    //图片上传
        @RequestMapping(value = "/addPicture", method = RequestMethod.POST)
        public String addPicture(MultipartFile img, Model model, HttpServletRequest request) {
            ArrayList<String> strings = new ArrayList<>();
            //得到上传文件实际路径
            String realPath = request.getServletContext().getRealPath(File.separator + "imges");
            if (img.isEmpty()) {
                strings.add("请选择文件!");
            }
            //得到文件的类型
            String fileType = img.getContentType();
            //第一种方式Arrays.asList("image/jpeg","image/png")
            if (!fileType.contains("image/")) {
                strings.add("只允许上传图片!");
            }
            //只允许上传的图片小于5MB
            if (img.getSize() > 1024 * 1024 * 1024 * 5) {
                strings.add("只允许上传5M的图片!");
            }
            if (!strings.isEmpty()) {
                model.addAttribute("errs", strings);
                return "empAdd";
            }
            try {
                String[] formatName = getFormatName(img.getOriginalFilename());
                img.transferTo(new File(realPath + File.separator + formatName[0] + formatName[1] + formatName[2]));
           //想要得到图片的相对路径/方法体返回的数组拼接在一起即可保存到数据库。 }
    catch (IOException e) { e.printStackTrace(); } return "empAdd"; } public String[] getFormatName(String fileName) { //设置日期格式yyyy-MM-dd SimpleDateFormat df = new SimpleDateFormat("_yyyyMMddHHmmss"); // new Date()为获取当前系统时间 String now = df.format(new Date()); //获得文件名去掉后缀 String prefix = fileName.substring(0, fileName.lastIndexOf(".")); //得到文件后缀带. String postfix = fileName.substring(fileName.lastIndexOf(".")); return new String[]{prefix, now, postfix}; }

    jsp方面

    需要注意的是,一定要写 enctype="multipart/form-data",否则springmvc就会解析失败。这个的作用就是将form表单的数据以二进制的方式传输。

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
    <div style="margin:auto">
        <form:form action="/addPicture" method="post" enctype="multipart/form-data">
            <input type="file" name="img" />
            <input type="submit"/>
        </form:form>
    </div>
    错误信息显示:
    <c:forEach items="${errs}" var="e">
    <div>${e}</div>
    </c:forEach>

    jQuery+ajax方式

    <input type="file" id="fff"/>
    <input type="button" id="gg" value="提交测试"/>
      //ajax上传文件
        $("#gg").on("click", function () {
            var data = new FormData();
            data.append("aaa", "第一个数据");
            data.append("file", document.querySelector("#fff").files[0]);
            $.ajax({
                url:"/getFile",
                method:"post",
                contentType:false,
                data:data,
                processData:false
            });
        });

    后台代码

     @RequestMapping(value = "/getFile" ,method = RequestMethod.POST)
        public String gg(MultipartFile file, String aaa){
            System.out.println(file.getOriginalFilename()+"___"+aaa);
            return "{"msg":"succeed"}";
        }

    具体后台实现同上。。。

  • 相关阅读:
    this指向问题
    b继承a的函数
    如何解决跨域问题
    事件冒泡和阻止事件冒泡
    Spring5(二)——IOC
    MySQL基础(四)——
    MySQL基础(二)——常用命令
    MySQL基础(一)——入门
    Linux(二)——常用命令
    Linux(一)——简介
  • 原文地址:https://www.cnblogs.com/dzcici/p/9896365.html
Copyright © 2011-2022 走看看