spring下的文件上传、下载与删除

文件上传:

文件上传首先需要有一个文件保存路径:

            String picturePath = request.getSession().getServletContext().getRealPath("/") + File.separator + "uploadFiles" + File.separator + "complain" + File.separator;

随后判断文件夹目录是否存在:

File file = new File(picturePath);
if (!file.exists()) {
    file.mkdirs();
}

随后通过前台的<input type="file" name='file1'>的值获取到文件file1,再可以通过file1获取到文件名字、文件类型、保存到服务器的文件名:

String pictureName = file1.getOriginalFilename();
String fileType = pictureName.substring(pictureName.lastIndexOf(".") + 1);
String filePath = System.currentTimeMillis() + "." + fileType;

然后就可以把你的路径+服务器中的文件名放到一个新建的File里面,最后保存文件就行了:

File uploadFile = new File(picturePath + filePath);
file1.transferTo(uploadFile);

然后你获取的各种信息就可以放到数据库里面了,这里就不说了。

 

文件的删除:

文件删除很简单,通过获取文件的路径+保存在服务的名字,最后delete一下就能把文件删除了:

File deleteFile = new File(picturePath + filename);
deleteFile.delete();

 

 

文件的下载:

文件的下栽需要获取文件的路径以及文件在服务器的名称,最后经过一系列的编码问题来达到下载的问题:

   String path = File.separator + "uploadFiles" + File.separator + "complain" + File.separator + (complainAccessory.getFileUrl());
        String name = complainAccessory.getFileName();
        String realPath = request.getSession().getServletContext().getRealPath(path);
        File file = new File(realPath);
        // boolean isok = file.exists();
        HttpHeaders headers = new HttpHeaders();
        String fileName = name;
        try {
            String userAgent = request.getHeader("User-Agent");

            if (StringUtils.contains(userAgent, "MSIE") || (StringUtils.contains(userAgent, "Mozilla") && StringUtils.contains(userAgent, "rv:11"))) {
                boolean flage = false;
                if (fileName.indexOf(" ") > -1) {
                    flage = true;
                }
                fileName = URLEncoder.encode(fileName, "UTF-8");
                if (flage) {
                    fileName = fileName.replace("+", " ");
                }


            } else if (StringUtils.contains(userAgent, "Mozilla")) {
                fileName = new String(fileName.getBytes(), "ISO8859-1");
            } else {
                fileName = URLEncoder.encode(fileName, "UTF-8");
            }

//            if("MSIE".equals(userAgent.toUpperCase())){
//                fileName = URLEncoder.encode(fileName, "UTF-8");
//            }else {
//                fileName = new String(name.getBytes("UTF-8"),"iso-8859-1");
//            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        headers.add("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
//        headers.setContentDispositionFormData("attachment", fileName);
//        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        byte[] bytes = null;
        try {
            bytes = FileUtils.readFileToByteArray(file);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK);

 

posted @ 2016-01-22 17:31  claire_余洋  阅读(572)  评论(0编辑  收藏  举报