• java附件上传下载磁盘版


    ACTION

    public class UploadAction extends BaseAction {
    
        private static final long serialVersionUID = 1L;
    
        @Autowired
        private UploadService uploadser;
    
        public String index() {
            return "upload";
        }
    
        // 附件上传
        public void up() throws IOException {
    
            // 设置文件缓存地址和缓存大小,需要时在设置/
            File bufferTemp = new File(Path.UPLOAD_FILES);
            if (!bufferTemp.exists()) {
                bufferTemp.mkdirs();
            }
            if (attfile != null) {
                Map<String, Object> fileInfo = getfileInfo();
                File savefile = new File(bufferTemp, fileInfo.get("fileid") + "."
                        + fileInfo.get("fsuffix"));
                if (!savefile.getParentFile().exists())
                    savefile.getParentFile().mkdirs();
                FileUtils.copyFile(attfile, savefile);
                response.setContentType("text/html;charset=UTF-8");
                if (uploadser.save(fileInfo) > 0) {
                    response.getWriter().write(
                            "<script type='text/javascript'>window.parent.callback('"
                                    + fileInfo.get("fileid") + "', '"
                                    + fileInfo.get("filename")
                                    + fileInfo.get("fsuffix") + "', 'success', '"
                                    + fileInfo.get("filetype") + "');</script>");
                } else {
                    response.getWriter().write(
                            "<script type='text/javascript'>window.parent.callback('"
                                    + fileInfo.get("fileid") + "', '"
                                    + fileInfo.get("filename")
                                    + fileInfo.get("fsuffix") + "', 'failure', '"
                                    + fileInfo.get("filetype") + "');</script>");
                }
            }
    
        }
    
        // 附件下载
        public void down() throws IOException {
            Map<String, Object> fileinfo = new HashMap<String, Object>();
            fileinfo = uploadser.getFileInfo(fileid);
    
            String filename = fileid + "." + fileinfo.get("fsuffix");
            File file = new File(Path.UPLOAD_FILES + "\" + filename);
            if (!file.exists()) {
                response.sendError(404, "File not found!");
            }
            BufferedInputStream br = new BufferedInputStream(new FileInputStream(
                    file));
            byte[] buf = new byte[1024];
            int len = 0;
            response.setCharacterEncoding("utf-8");
            response.setContentType("application/x-msdownload");
            response.setHeader(
                    "Content-disposition",
                    "attachment; filename="
                            + URLEncoder.encode(fileinfo.get("filename") + "."
                                    + fileinfo.get("fsuffix"), "utf-8"));
            OutputStream out = response.getOutputStream();
            while ((len = br.read(buf)) > 0)
                out.write(buf, 0, len);
            br.close();
            out.close();
        }
    
        // 删除单个附件
        public void del() throws IOException {
            int row = uploadser.delByFileId(fileid);
            response.getWriter().print(row > 0 ? true : false);
        }
    
        // 组合上传附件信息
        private Map<String, Object> getfileInfo() {
            Map<String, Object> infoMap = new HashMap<String, Object>();
            infoMap.put("fileid", Tool.getUUID());
            infoMap.put("filename",
                    attfileFileName.substring(0, attfileFileName.lastIndexOf(".")));
            infoMap.put("filetype", filetype);
            infoMap.put("dataid", dataid);
            infoMap.put("fcreateuserid", getLogin().getId());
            infoMap.put("fcreateusername", getLogin().getName());
            infoMap.put("fcreatetime",
                    DateUtil.getCurrentDateAsString("yyyy-MM-dd"));
            infoMap.put("fsuffix", attfileFileName.substring(
                    attfileFileName.lastIndexOf(".") + 1, attfileFileName.length()));
            return infoMap;
        }
    
        private String postfix;
    
        private String filetype;
    
        private String dataid;
    
        private String fileid;
    
        private File attfile;
    
        private String attfileFileName;
    
        public String getFileid() {
            return fileid;
        }
    
        public void setFileid(String fileid) {
            this.fileid = fileid;
        }
    
        public String getPostfix() {
            return postfix;
        }
    
        public void setPostfix(String postfix) {
            this.postfix = postfix;
        }
    
        public String getFiletype() {
            return filetype;
        }
    
        public void setFiletype(String filetype) {
            this.filetype = filetype;
        }
    
        public String getDataid() {
            return dataid;
        }
    
        public void setDataid(String dataid) {
            this.dataid = dataid;
        }
    
        public File getAttfile() {
            return attfile;
        }
    
        public void setAttfile(File attfile) {
            this.attfile = attfile;
        }
    
        public String getAttfileFileName() {
            return attfileFileName;
        }
    
        public void setAttfileFileName(String attfileFileName) {
            this.attfileFileName = attfileFileName;
        }
    
    }

    SERVICE

    @Service
    public class UploadService {
    
        @Autowired
        UploadDao uploaddao;
    
        // 保存
        public int save(Map<String, Object> fileInfo) {
            return uploaddao.save(fileInfo);
        }
    
        // 取得附件列表
        public List<Map<String, Object>> getFilesByDataId(String dataid) {
            return uploaddao.getFilesByDataId(dataid);
        }
    
        // 根据附件ID删除
        public int delByFileId(String fileid) {
            Map<String, Object> fileinfo = this.getFileInfo(fileid);
            int reval = 0;
            if (fileid.length() > 0) {
                reval = delDiskFile(fileid + "." + fileinfo.get("fsuffix")) ? uploaddao
                        .delByFileId(fileid) : 0;
            }
            return reval;
        }
    
        // 根据业务数据ID批量删除
        public int delByDataId(String dataid) {
            List<Map<String, Object>> filesinfo = this.getFilesByDataId(dataid);
            Map<String, Object> fileinfo = null;
            int reval = 0;
            if (filesinfo.size() > 0) {
                for (int i = 0; i < filesinfo.size(); i++) {
                    fileinfo = filesinfo.get(i);
                    delDiskFile(fileinfo.get("fileid") + "."
                            + fileinfo.get("fsuffix"));
                }
                reval = uploaddao.delByDataId(dataid);
            }
            return reval;
        }
    
        // 获取附件信息
        public Map<String, Object> getFileInfo(String fileid) {
            return uploaddao.getFileInfo(fileid);
        }
    
        // 删除磁盘文件
        private boolean delDiskFile(String filename) {
            File file = new File(Path.UPLOAD_FILES + "\" + filename);
            boolean suc = false;
            if (file.exists()) {
                suc = file.delete();
            }
            return suc;
        }
    }

    DAO

    @Service
    public class UploadService {
    
        @Autowired
        UploadDao uploaddao;
    
        // 保存
        public int save(Map<String, Object> fileInfo) {
            return uploaddao.save(fileInfo);
        }
    
        // 取得附件列表
        public List<Map<String, Object>> getFilesByDataId(String dataid) {
            return uploaddao.getFilesByDataId(dataid);
        }
    
        // 根据附件ID删除
        public int delByFileId(String fileid) {
            Map<String, Object> fileinfo = this.getFileInfo(fileid);
            int reval = 0;
            if (fileid.length() > 0) {
                reval = delDiskFile(fileid + "." + fileinfo.get("fsuffix")) ? uploaddao
                        .delByFileId(fileid) : 0;
            }
            return reval;
        }
    
        // 根据业务数据ID批量删除
        public int delByDataId(String dataid) {
            List<Map<String, Object>> filesinfo = this.getFilesByDataId(dataid);
            Map<String, Object> fileinfo = null;
            int reval = 0;
            if (filesinfo.size() > 0) {
                for (int i = 0; i < filesinfo.size(); i++) {
                    fileinfo = filesinfo.get(i);
                    delDiskFile(fileinfo.get("fileid") + "."
                            + fileinfo.get("fsuffix"));
                }
                reval = uploaddao.delByDataId(dataid);
            }
            return reval;
        }
    
        // 获取附件信息
        public Map<String, Object> getFileInfo(String fileid) {
            return uploaddao.getFileInfo(fileid);
        }
    
        // 删除磁盘文件
        private boolean delDiskFile(String filename) {
            File file = new File(Path.UPLOAD_FILES + "\" + filename);
            boolean suc = false;
            if (file.exists()) {
                suc = file.delete();
            }
            return suc;
        }
    }
  • 相关阅读:
    HDU 6194【后缀数组】
    SGU 104 Little shop of flowers【DP】
    POJ 2104 K-th Number【整体二分 + 树状数组】
    HDU 5573 Binary Tree【构造】
    UVA 10245 The Closest Pair Problem【分治】
    POJ 1741 Tree【树分治】
    边缘检测的微分算子简单比较【1】
    HDU 5584 LCM Walk【搜索】
    51nod 1686 第K大区间【离散化+二分】
    HDU 5572 An Easy Physics Problem【计算几何】
  • 原文地址:https://www.cnblogs.com/fxfly/p/4784795.html
Copyright © 2020-2023  润新知