maven+ssm使用jquery.upload操作设定格式的文件上传下载并且图片再新页面开启非图片点击下载

需求为创建上传表与主表id关联 页面显示表格以及上传 、查看、删除 需遍历显示name字段
//使用ssm+maven bootstrap pl/sql

创建表以及索引插入相应测试数据 并在maven中写好底层代码

这里写图片描述

使用jquery upload.js

这里写图片描述
前端代码

在这里插入图片描述

js方法

function fileInputChange(filePath,allowedFileExtensions,textId,index){
    if (!checkFileExt(filePath,allowedFileExtensions)){
        Modal.alert({
            msg : "请上传["+allowedFileExtensions+"]类型的文件!!"
        });
        $("#"+textId).val("");
        return;
    }
    $("#"+textId).val(filePath);
    //直接上传
    $.ajaxFileUpload({
        url : $.el.Register.AppUrl + "xqgl/importReport",// conreoller的url地址
        secureuri : false,
        fileElementId : [ 'tmImport' ],// input上传控件id
        data : {
        	projectId:data.projectId,
        },// 自己定=定义的上传的参数
        type : "post",
        dataType : 'text',
        success : function(data, status) {
            if (status=="success") {
                Modal.alert({
                    msg : "上传导入成功!!!"
                });
                $("#xinzengttj").modal("hide");
                $("#uploadtable").bootstrapTable('refresh');
            } else {
                Modal.alert({
                    msg : "上传导入失败!!!"
                });
            }
        },
        error : function(data, status, e) {
            Modal.alert({
                msg : "系统错误" + e
            });
            hideWaiting();
        }
    });
}

util工具类

package com.elitel.fwgl.xqgl.web.main.controller;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;

public class FileUtil {

	/**
     * 获取多文件的文件名
     * 
     * @param request
     * @param response
     * @param path
     * @return
     */
    public final static Map<String, Object> fileNameUploads(
            HttpServletRequest request) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        Map<String, Object> fileNames = new HashMap<String, Object>();
        for (Iterator<?> i = fileMap.keySet().iterator(); i.hasNext();) {
            Object obj = i.next();
            MultipartFile mFile = (MultipartFile) fileMap.get(obj);
            // 得到上传的文件的文件名
            String filename = mFile.getOriginalFilename();
            if (filename == "" || filename == null) {
                continue;
            }
            fileNames.put(obj.toString(), filename);
        }
        return fileNames;
    }

    /**
     * 文件上传--单文件
     * 
     * @param request
     * @param response
     * @param path
     *            文件存放路径(path为WebApp\后面的内容)
     * @return
     */
    public final static String fileUpload(HttpServletRequest request,
            HttpServletResponse response, String path) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        MultipartFile mFile = null;
        for (Iterator<?> i = fileMap.keySet().iterator(); i.hasNext();) {
            Object obj = i.next();
            mFile = (MultipartFile) fileMap.get(obj);
        }
        String filePath = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        try {
            // 得到上传的文件的文件名
            String filename = mFile.getOriginalFilename();
            // 获取文件后缀名
            if (filename != null && !("").equals(filename)) {
                 String fileExt = filename.substring(filename.indexOf("."));
                // 按时间格式重新生成文件名
                 String newFileName = sdf.format(new Date())+ (int)(Math.random() * 100) + fileExt;
                 filePath = path + "/" + newFileName;
                //filePath = path + "/" + filename;
                // 得到上传服务器的物理路径
                path = request.getSession().getServletContext()
                        .getRealPath("\\" + path);
                // 文件流写到服务器端
                 File saveFile = new File(path, newFileName);
                //File saveFile = new File(path, filename);
                FileCopyUtils.copy(mFile.getBytes(), saveFile);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return filePath;
    }

    /**
     * 文件上传--多文件
     * 
     * @param request
     * @param response
     * @param filePaths
     *            (fileinputId,WebApp\后面的内容)
     * @return
     */
    public final static Map<String, Object> fileUploads(
            HttpServletRequest request, HttpServletResponse response,
            String path) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        Map<String, Object> filePaths = new HashMap<String, Object>();
        // 得到上传服务器的物理路径
        String fileUrl = request.getSession().getServletContext()
                .getRealPath("\\" + path);
        for (Iterator<?> i = fileMap.keySet().iterator(); i.hasNext();) {
            Object obj = i.next();
            MultipartFile mFile = (MultipartFile) fileMap.get(obj);
            // 得到上传的文件的文件名
            String filename = mFile.getOriginalFilename();
            if (filename == "" || filename == null) {
                continue;
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            // 获取文件后缀名
            String fileExt = filename.substring(filename.indexOf("."));
            // 按时间格式重新生成文件名
            String newFileName = sdf.format(new Date())
                    + (int) (Math.random() * 100) + fileExt;
            String filePath = path + "/" + newFileName;
            // 文件流写到服务器端
            try {
                filePaths.put(obj.toString(), filePath);
                File saveFile = new File(fileUrl, newFileName);
                FileCopyUtils.copy(mFile.getBytes(), saveFile);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return filePaths;
    }

    /**
     * 删除文件
     * 
     * @param path
     *            文件存放路径(path为WebApp\后面的内容---数据库中存放的文件路径)
     * @return 成功标识(true/false)
     */
    public final static boolean fileDelete(HttpServletRequest request,
            HttpServletResponse response, String path) {
        String filePath = request.getSession().getServletContext()
                .getRealPath(path);
        File file = new File(filePath);
        boolean boo = false;
        if (file.isFile() && file.exists()) {
            // 是文件并且文件存在,调用删除文件方法
            boo = file.delete();
        }
        return boo;
    }

    /**
     * 打开文件
     * 
     * @param request
     * @param response
     */
    public final static void openFile(HttpServletRequest request,
            HttpServletResponse response, String filePath) {
        // 解决javaScript传参乱码
        ServletOutputStream out = null;
        InputStream in = null;
        try {
            filePath = java.net.URLDecoder.decode(filePath, "UTF-8");
            filePath = request.getSession().getServletContext()
                    .getRealPath("/" + filePath);
            in = new FileInputStream(filePath);
            out = response.getOutputStream();
            int len = 0;
            byte[] buffer = new byte[1024];
            while ((len = in.read(buffer, 0, 1024)) != -1) {
                out.write(buffer, 0, len);
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            System.out.println("文件不存在!!!");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("文件流输出异常!!!");
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                System.out.println("文件流关闭异常!!!");
                e.printStackTrace();
            }
        }
    }

    /**
     * 根据Doc模板生成word文件
     * 
     * @param dataMap
     *            Map 需要填入模板的数据
     * @param fileName
     *            文件名称
     * @param savePath
     *            保存路径
     */
    public final static void wordExport(HttpServletRequest request,
            Map<String, Object> dataMap, String savePath) {
        Configuration configure = new Configuration();
        configure.setDefaultEncoding("utf-8");
        try {
            // 加载需要装填的模板
            Template template = null;
            // 加载模板文件
            configure.setClassForTemplateLoading(FileUtil.class,
                    "/com/elitel/hljxmgl/jgjg/web/main/controller");
            // configure.setServletContextForTemplateLoading(sc, "/data");
            String modelPath = request.getSession().getServletContext()
                    .getRealPath("/static/data");
            configure.setDirectoryForTemplateLoading(new File(modelPath));
            // 设置对象包装器
            configure.setObjectWrapper(new DefaultObjectWrapper());
            // 设置异常处理器
            configure
                    .setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
            // 定义Template对象,注意模板类型名字与downloadType要一致
            template = configure.getTemplate("jgjgmodel.ftl");
            // 输出文档
            File outFile = new File(savePath);
            Writer out = null;
            out = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(outFile), "utf-8"));
            template.process(dataMap, out);
            outFile.delete();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public final static void wordExport2(HttpServletRequest request,
            Map<String, Object> dataMap, String savePath) {
        Configuration configure = new Configuration();
        configure.setDefaultEncoding("utf-8");
        try {
            // 加载需要装填的模板
            Template template = null;
            // 加载模板文件
            configure.setClassForTemplateLoading(FileUtil.class,
                    "com.elitel.hljxmgl.xtgl.web.main.controller");
            // configure.setServletContextForTemplateLoading(sc, "/data");
            String modelPath = request.getSession().getServletContext()
                    .getRealPath("/static/data");
            configure.setDirectoryForTemplateLoading(new File(modelPath));
            // 设置对象包装器
            configure.setObjectWrapper(new DefaultObjectWrapper());
            // 设置异常处理器
            configure
                    .setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
            // 定义Template对象,注意模板类型名字与downloadType要一致
            template = configure.getTemplate("jbxxXmgk.ftl");
            // 输出文档
            File outFile = new File(savePath);
            Writer out = null;
            out = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(outFile), "utf-8"));
            template.process(dataMap, out);
            outFile.delete();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void fileDownLoad(HttpServletRequest request,
            HttpServletResponse response, String path) throws IOException {

        path = URLDecoder.decode(path, "utf-8");
        String filename = request.getSession().getServletContext()
                .getRealPath(path); // 生成文件的文件名称 这个需要动态的获取
        // OutputStream out;// 输出响应正文的输出流
        ServletOutputStream out;
        // InputStream in;// 读取本地文件的输入流
        FileInputStream in;
        // 获得本地输入流
        File file = new File(filename);
        in = new FileInputStream(file);
        // 设置响应正文的MIME类型
        response.setContentType("Content-Disposition;charset=GB2312");
        response.setHeader("Content-Disposition", "attachment;"
                + " filename="
                + new String(path.substring(path.lastIndexOf("/") + 1)
                        .getBytes(), "ISO-8859-1"));
        // 把本地文件发送给客户端
        out = response.getOutputStream();
        int byteRead = 0;
        byte[] buffer = new byte[512];
        while ((byteRead = in.read(buffer)) != -1) {
            out.write(buffer, 0, byteRead);
        }
        out.flush();
        in.close();
        out.close();

    }

    /**
     * 读取序列化到本地的文件并转化成对象
     * 
     * @author wangds
     * @date 2018-04-28
     * @param <T>
     * @param path
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> T readMapToMemory(String path) {
        FileInputStream fis = null;
        T t = null;
        try {
            fis = new FileInputStream(path);
        } catch (FileNotFoundException e) {
            System.out.println("文件路径找不到" + path);
        }
        ObjectInputStream ois;
        try {
            ois = new ObjectInputStream(fis);
            t = (T) ois.readObject();
            ois.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return t;
    }

    /**
     * 对象序列化后存到磁盘
     * 
     * @author wangds
     * @date 2018-04-28
     * @param path
     * @param map
     */
    public static void saveMapToDisk(String path, Object obj) {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(path);
        } catch (FileNotFoundException e) {
            System.out.println("文件路径找不到" + path);
        }
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(fos);
            oos.writeObject(obj);
            oos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static boolean deletefile(String delpath){
        File file = new File(delpath);
        if (file.exists()) {
            if (!file.isDirectory()) {
                file.delete();
            } else if (file.isDirectory()) {
                String[] filelist = file.list();
                for (int i = 0; i < filelist.length; i++) {
                    File delfile = new File(delpath + "\\" + filelist[i]);
                    if (!delfile.isDirectory())
                        delfile.delete();
                    else if (delfile.isDirectory())
                        deletefile(delpath + "\\" + filelist[i]);
                }
                file.delete();
            }
        }
        return true;
    }
}

Controller方法

@RequestMapping("/importReport")
    @ResponseBody
    public int importReportByExcel(HttpServletRequest request,HttpServletResponse response,TbUpload params){
        LogCtrl.info(log, "XqglController从模板导入数据开始。。。");
        String dizhi=FileUtil.fileUpload(request, response, "static/upload/data");
        String name=(String)FileUtil.fileNameUploads(request).get("tmImport");
        params.setDizhi(dizhi);//文件地址存入数据库
        params.setName(name);//文件姓名存入数据库
        LogCtrl.info(log, "XqglController从模板导入数据完成。。。");
        System.out.println(params.getProjectId());
        return service.insertupload(params);//执行新增方法存入数据库
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值