• java文件上传与下载


    不多说,直接上实例代码!!!

    我使用的是idea工具,maven管理。

    首先,在pom.xml引入上传文件所需要的包。

    <!--fileupload-->
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
        </dependency>
    
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.2</version>
        </dependency>

    单文件上传:

    /**
     * Created by 陈 on 2017/9/17.
     */
    @Controller
    @RequestMapping("/home")
    public class UploadController {
        @RequestMapping("/oneUpload")
        public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request){
            String uploadUrl = request.getSession().getServletContext().getRealPath("/") + "upload/";
            String filename = file.getOriginalFilename();
    
            //判断相应路径是否存在,不存在则创建
            File dir = new File(uploadUrl);
            if(!dir.exists()){
                dir.mkdir();
            }
    
            System.out.println("文件上传到:" + uploadUrl + filename);
            File targetFile = new File(uploadUrl + filename);
            if(!targetFile.exists()){
                try {
                    targetFile.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            //移动上传文件
            try {
                file.transferTo(targetFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            System.out.println("http://127.0.0.1:8080/study2/upload/" + filename);
            return null;
        }
    }

    多文件上传:

     @RequestMapping("/moreUpload")
        public String moreUpload(HttpServletRequest request){
            MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
            Map<String, MultipartFile> files = multipartHttpServletRequest.getFileMap();
    
            String uploadUrl = request.getSession().getServletContext().getRealPath("/") + "upload/";
    
            //判断相应路径是否存在,不存在则创建
            File dir = new File(uploadUrl);
            if(!dir.exists()){
                dir.mkdir();
            }
    
            List<String> fileList = new ArrayList<String>();
            for(MultipartFile file : files.values()){
                File targetFile = new File(uploadUrl + file.getOriginalFilename());
                if(!targetFile.exists()){
                    try {
                        targetFile.createNewFile();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
    
                    try {
                        file.transferTo(targetFile);
                        fileList.add("http://localhost:8080/study2/upload/" + file.getOriginalFilename());
                    } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
    
            request.setAttribute("files",fileList);
            System.out.println(files.size());
            return null;
        }

    文件下载:

    @Controller
    
    public class downLoadController {
        @RequestMapping("/downLoad")
        public String downLoad(String fileName, HttpServletRequest request, HttpServletResponse response){
            response.setContentType("text/html;charset=utf-8");
            try {
                request.setCharacterEncoding("UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
    
            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;
    
            String ctxPath = request.getSession().getServletContext().getRealPath("/") + "upload/";
            String downLoadPath = ctxPath + fileName;
            System.out.println(downLoadPath);
    
            try {
                long fileLength = new java.io.File(downLoadPath).length();
                response.setContentType("application/x-msdownload;");
                response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
                response.setHeader("Content-Length", String.valueOf(fileLength));
                bis = new BufferedInputStream(new FileInputStream(downLoadPath));
                bos = new BufferedOutputStream(response.getOutputStream());
                byte[] buff = new byte[2048];
                int bytesRead;
                while ((bytesRead = bis.read(buff, 0, buff.length)) != -1) {
                    bos.write(buff, 0, bytesRead);
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            return null;
        }
    }
    未来的你会感谢现在努力的你
  • 相关阅读:
    uva 10791 Minimum Sum LCM
    欧拉函数
    uva 10820 Send a Table
    本原勾股数组(PPT)
    uva 10003 Cutting Sticks
    生成随机数据
    uva 10759 Dice Throwing
    uva 106 Fermat vs. Pythagoras
    WPF 与 摄像头资料
    纠结于wpf 多国语言方案,希望各位指点
  • 原文地址:https://www.cnblogs.com/cjxblogs/p/7544863.html
Copyright © 2020-2023  润新知