• ~随笔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;
        }
  • 相关阅读:
    金蝶 kis一些功能的内部逻辑和个人技巧
    mysql横向和纵向合并sql数据用于展示,快递导出导入海量数据
    laravel carbon时间处理组件开发文档-中文版
    金蝶kis数据库说明(转载)
    java微信支付,对账单下载
    RabbitMQ中文文档PHP版本(七)--发布者确认
    RabbitMQ中文文档PHP版本(六)--远程过程调用(RPC)
    RabbitMQ中文文档PHP版本(五)--主题
    RabbitMQ中文文档PHP版本(四)--路由
    RabbitMQ中文文档PHP版本(二)--发布/订阅
  • 原文地址:https://www.cnblogs.com/gaojl/p/8469641.html
Copyright © 2020-2023  润新知