~随笔A011~利用MultipartFile实现附件上传

  系统中经常会涉及到附件上传,这里采用MultipartFile实现此功能。

  1.前端jsp页面

  选中文件后会通过uploader="disclosureFileErController.do?saveFiles&table=${table}&id=${id}"进行controller类调取

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
 
<!DOCTYPE html>
<html>
<head>
<title>文件列表</title>
<t:base type="jquery,easyui,tools"></t:base>
</head>
<style type="text/css">   
</style>  
<body style="overflow-y: hidden" scroll="no"> 
<t:formvalid formid="formobj" layout="div" dialog="true" beforeSubmit="upload"> 
    <fieldset class="step"> 
    <div class="form">  
        <t:upload name="fiels" buttonText="上传文件" uploader="disclosureFileErController.do?saveFiles&table=${table}&id=${id}" extend="" id="file_upload" formData="documentTitle"></t:upload>
    </div>
    <div class="form" id="filediv"  > 
    </div>
    </fieldset>
</t:formvalid> 
</body> 
</html>

  2.后端controller类实现文件上传功能

  (1)将文件基础信息存储到数据库表中

  (2)将文件本身存到Tomcat服务器上

     /**
     * 保存文件 20180224gaojl
     * 
     * @param document
     * @return
     * @throws Exception
     */
    @RequestMapping(params = "saveFiles", method = RequestMethod.POST)
    @ResponseBody
    public AjaxJson saveFiles(HttpServletRequest request, HttpServletResponse response) {
        AjaxJson j = new AjaxJson();
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Iterator iter = multipartRequest.getFileNames();
        String name = "";
        String path = null;
        while (iter.hasNext()) {
            MultipartFile file = multipartRequest.getFile(iter.next().toString());
            name = file.getOriginalFilename();
            path = request.getSession().getServletContext().getRealPath("/") + "upload/" + name;
            // ——文件信息存档——开始
            String table = (String) request.getParameter("table");
            if ("disclosure_base_er".equals(table)) {
                DisclosureBaseErEntity fileE = new DisclosureBaseErEntity();
                fileE.setFilePath(path);
                fileE.setFileName(name);
                Date date = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String datetime = sdf.format(date);
                fileE.setDate(datetime);
                String uuid = UUID.randomUUID().toString();
                fileE.setFileId(uuid);
                fileE.setDisclosureFileErId(request.getParameter("id"));
                // 文件上传成功后,再把数据保存都数据库
                try {
                    systemService.save(fileE);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            } else if ("disclosure_tower_er".equals(table)) {
                DisclosureTowerErEntity fileE = new DisclosureTowerErEntity();
                fileE.setFilePath(path);
                fileE.setFileName(name);
                String uuid = UUID.randomUUID().toString();
                fileE.setFileId(uuid);
                fileE.setDisclosureFileErId(request.getParameter("id"));
                // 文件上传成功后,再把数据保存都数据库
                try {
                    systemService.save(fileE);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            } else if ("disclosure_string_er".equals(table)) {
                DisclosureStringErEntity fileE = new DisclosureStringErEntity();
                fileE.setFilePath(path);
                fileE.setFileName(name);
                String uuid = UUID.randomUUID().toString();
                fileE.setFileId(uuid);
                fileE.setDisclosureFileErId(request.getParameter("id"));
                // 文件上传成功后,再把数据保存都数据库
                try {
                    systemService.save(fileE);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
            // ——文件信息存档——结束
            try {
                file.transferTo(new File(path));
                System.out.println("文件path === " + path);
            } catch (Exception e) {
                j.setMsg("附件上传失败!");
                return j;
            }
        }
        j.setMsg("文件添加成功");
        return j;
    }
原文地址:https://www.cnblogs.com/gaojl/p/8469641.html