文件的上传,下载,预览

来源:互联网 发布:专业的vb振动电机 编辑:程序博客网 时间:2024/05/01 18:23

文件上传需要用到:ajaxfileupload.js

页面:

<a class="orange upload-work-confirm" data-id="upload_file1" data-candidateid="${candidateId!''}" data-jobid="${jobId!''}" href="javascript:void(0);"> <i class="icon-all recom-uploading-icon"></i><label class="modalupl">上传文件<span style="white-space:pre"></span><input type="file" class="upload" id="upload_file1" name="offerUpload"></label></a>

js:

//  文件上传$(".upload-work-confirm").on('change', function() {var candidateId = $(this).attr("data-candidateid");var jobId = $(this).attr("data-jobid");var id = $(this).attr("data-id");$.ajaxFileUpload({url : base + "/gwFile/toGwUpload.htm",data : {candidateId : candidateId},secureuri : false,fileElementId : id,dataType : 'json',success : function(data) {if (data.success == 0) {$.ajax({url : base + "/gwCandidate/saveUploadWork.htm",data : {candidateId : candidateId,jobId : jobId},type : "POST",dataType : "json",success : function(data) {if (data.success == 0) {alert("上传成功");} else {alert("系统异常,请稍后再试");}}});} else if (data.success == 2) {globalLogin(data.msg);return false;} else {alert(data.errorMsg);}}});});


java后台:

/**     * 获取对应上传的文件     *      * @return     */    @SuppressWarnings("rawtypes")    @RequestMapping("/toGwUpload")    @ResponseBody    @NeedPermission(true)    @NeedLogin(true)    public ResponseEntity<Map<String, Object>> toUpload(HttpServletRequest request, HttpSession session) {        Map<String, Object> map = new HashMap<String, Object>();        try {            map.put("msg", "");            GwAccountBean gwInfo = (GwAccountBean) request.getSession().getAttribute("gwInfo");            if (null == gwInfo) {                LOGGER.debug("GW  没有的登录,跳转到登录页面");                map.put("success", 2);                map.put("msg", "gw");                map.put("code", 2);                return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);            }            // 保存上传的文件            MultipartHttpServletRequest multipartHttpservletRequest = (MultipartHttpServletRequest) request;            // MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());            // MultipartHttpServletRequest multipartHttpservletRequest = resolver.resolveMultipart(request);            for (Iterator it = multipartHttpservletRequest.getFileNames(); it.hasNext();) {                String key = (String) it.next();                MultipartFile multipartFile = multipartHttpservletRequest.getFile(key);                if (multipartFile == null) {                    map.put("success", 3);                    map.put("errorMsg", "文件上传异常,请稍后重试");                    map.put("code", 1);                    return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);                }                String html = "";// 转换的html路径与名称                String fileName = multipartFile.getOriginalFilename();// 文件名称                if (!StringUtils.isEmpty(fileName)) {                    //去掉文件名中的所有空格                    fileName = fileName.replaceAll(" ", "");                }                String last = fileName.substring(fileName.lastIndexOf("."), fileName.length());                List<String> arrowExtension = Arrays.asList(".xls,.xlsx,.doc,.docx,.pdf".split(","));                if (!arrowExtension.contains(last.toLowerCase())) {                    map.put("success", 4);                    map.put("errorMsg", "不能上传该格式的文档");                    map.put("code", 1);                    return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);                }                map.put("fileName", fileName);                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");                String date = sdf.format(new Date());                String path = lieniProperties.getLocalFilePath() + File.separatorChar + date;                String picPath = path + File.separatorChar;// 文件保存路径                String filePath = (String) session.getAttribute("filepath");// 文件上传保存的路径                if (StringUtils.isNotBlank(filePath)) {// 上传过                    String filePathLast = filePath.substring(filePath.lastIndexOf("."), filePath.length());                    if (!filePathLast.equals(last)) {                        CommonUtil.deleteFile(filePath, null);                        filePath = filePath.replace(filePathLast, last);                    }                    fileName = filePath.substring(filePath.lastIndexOf(File.separatorChar), filePath.length());                    html = filePath.substring(0, filePath.lastIndexOf(".")) + ".html";                    picPath = picPath                            + filePath.substring(filePath.lastIndexOf(File.separatorChar) + 1,                                    filePath.lastIndexOf(".")) + File.separatorChar;                } else {                    String name = UUID.randomUUID().toString();                    fileName = name + last;                    html = path + File.separatorChar + name + ".html";                    filePath = path + File.separatorChar + fileName;                    picPath = picPath + name + File.separatorChar;                }                File targetFile = new File(path, fileName);                if (!targetFile.exists()) {// 文件保存路径                    targetFile.mkdirs();                }                multipartFile.transferTo(targetFile);                session.setAttribute("filepath", targetFile.getPath());                map.put("filepath", targetFile.getPath());                map.put("htmlpath", html);                map.put("success", 0);                map.put("code", 0);            }        } catch (Exception e) {            e.printStackTrace();            map.put("success", 1);            map.put("code", 0);            map.put("errorMsg", "系统异常,请稍后重试");        }        return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);    }
对应的文件存放路径放在了session中,我们可以把对应路径存放在数据库中,如果需要下载或者预览,直接从数据库中读取文件路径


文件下载:


 /**     *      * 文件下载推荐报告     *      * @param request     * @param downType 1:表示下载推荐报告;2表示下载offer     * @param session     * @see [相关类/方法](可选)     * @since [产品/模块版本](可选)     */    @RequestMapping("/toGwDown")    @NeedPermission(true)    @NeedLogin(true)    public void toDown(HttpServletRequest request, HttpServletResponse response, HttpSession session) {        FileInputStream fis = null;        OutputStream myout = null;        BufferedInputStream buff = null;        try {            GwAccountBean gwInfo = (GwAccountBean) request.getSession().getAttribute("gwInfo");            if (null == gwInfo) {                LOGGER.debug("  没有的登录,跳转到登录页面");                return;            }            String downType = request.getParameter("downType");            String candidateId = request.getParameter("candidateId");            String jobId = request.getParameter("jobId");            if (StringUtils.isBlank(candidateId) || StringUtils.isBlank(jobId) || StringUtils.isBlank(downType)) {                LOGGER.debug("param is null error");                return;            }            CandidateInfoBean candidateInfoBean = gwOperatorService.queryCandidateInfo(candidateId, gwInfo.getId(),                    jobId);            if (null == candidateInfoBean) {                LOGGER.debug("查询不到对应候选人信息");                return;            }            String fileTypeName = "";            String filePath = "";            if ("1".equals(downType)) {                fileTypeName = "报告" + jobId + "-" + candidateInfoBean.getJobName() + "@" + candidateId + "-"                        + candidateInfoBean.getCandidateName();                filePath = candidateInfoBean.getRecommendReportPath();            } else if ("2".equals(downType)) {                fileTypeName = "offer" + jobId + candidateInfoBean.getJobName() + "@" + candidateId + "-"                        + candidateInfoBean.getCandidateName();                filePath = candidateInfoBean.getOfferAnnexPath();            } else if ("3".equals(downType)) {                fileTypeName = "确认函" + jobId + candidateInfoBean.getJobName() + "@" + candidateId + "-"                        + candidateInfoBean.getCandidateName();                filePath = candidateInfoBean.getEntryConfirmationPath();            }            if (StringUtils.isBlank(filePath)) {                LOGGER.debug("查询不到对应候选人文件");                return;            }            filePath = properties.getLocalFilePath() + filePath;            String fileType = filePath.substring(filePath.lastIndexOf("."), filePath.length());            response.setContentType(CONTENT_TYPE);            // 得到下载文件的名字            // String filename=request.getParameter("filename");            // 解决中文乱码问题            String filename = new String(filePath.getBytes("iso-8859-1"), "gbk");            // 创建file对象            File file = new File(filename);            // 设置response的编码方式            response.setContentType("application/x-msdownload");            // 写明要下载的文件的大小            response.setContentLength((int) file.length());            // 设置附加文件名            // response.setHeader("Content-Disposition","attachment;filename="+filename);            // 解决中文乱码            response.setHeader("Content-Disposition",                    "attachment;filename=" + new String((fileTypeName + fileType).getBytes("gbk"), "iso-8859-1"));            // 读出文件到i/o流            fis = new FileInputStream(file);            buff = new BufferedInputStream(fis);            byte[] b = new byte[1024];// 相当于我们的缓存            long k = 0;// 该值用于计算当前实际下载了多少字节            // 从response对象中得到输出流,准备下载            myout = response.getOutputStream();            // 开始循环下载            while (k < file.length()) {                int j = buff.read(b, 0, 1024);                k += j;                // 将b中的数据写到客户端的内存                myout.write(b, 0, j);            }            // 将写入到客户端的内存的数据,刷新到磁盘            myout.flush();        } catch (Exception e) {            e.printStackTrace();            LOGGER.error(e.getMessage());        } finally {            try {                if (myout != null) {                    myout.close();                }                if (buff != null) {                    buff.close();                }            } catch (IOException e) {                LOGGER.error(e.getMessage());                e.printStackTrace();            }        }    }

文件删除:

/**     *      * 删除文件     *      * @param request     * @param session     * @return     * @see [相关类/方法](可选)     * @since [产品/模块版本](可选)     */    @RequestMapping("/toGwDelete")    @ResponseBody    @NeedPermission(true)    @NeedLogin(true)    public ResponseEntity<Map<String, Object>> toDelete(HttpServletRequest request, HttpSession session) {        Map<String, Object> map = new HashMap<String, Object>();        try {            map.put("msg", "");            GwAccountBean gwInfo = (GwAccountBean) request.getSession().getAttribute("gwInfo");            if (null == gwInfo) {                LOGGER.debug("GW  没有的登录,跳转到登录页面");                map.put("success", 2);                map.put("msg", "gw");                map.put("code", 2);                return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);            }            // 获取对应文件路径            String filePath = (String) session.getAttribute("filepath");// 上传保存的路径            session.removeAttribute("filepath");                       String filetype = filePath.substring(filePath.lastIndexOf(".") + 1, filePath.length());            String htmlPath = filePath.replace(filetype, "html");            // 删除对应文件            if (StringUtils.isNotBlank(filePath)) {                File wordFile = new File(filePath);                if (wordFile.exists()) {// 文件保存路径                    if (wordFile.isFile()) { // 为文件时调用删除文件方法                        wordFile.delete();                    }                }            }            if (StringUtils.isNotBlank(htmlPath)) {                File htmlFile = new File(htmlPath);                String dirPath = htmlPath.substring(0, htmlPath.lastIndexOf("."));                if (htmlFile.exists()) {// html保存路径                    if (htmlFile.isFile()) { // 为文件时调用删除文件方法                        htmlFile.delete();                    }                }                File dirFile = new File(dirPath);                if (dirFile.exists() && dirFile.isDirectory()) {// 删除对应图片保存目录及文件                    File[] files = dirFile.listFiles();                    for (int i = 0; i < files.length; i++) {                        // 删除子文件                        if (files[i].isFile()) {                            files[i].delete();                        }                    }                    dirFile.delete();                }            }            map.put("success", 0);            map.put("code", 0);        } catch (Exception e) {            e.printStackTrace();            map.put("success", 1);            map.put("code", 1);            map.put("errorMsg", "系统异常,请稍后重试");        }        return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);    }




文件预览可以看另外一篇文章



0 0
原创粉丝点击