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\"}";
    }

具體后台實現同上。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM