各种文件上传下载的本质

上传文件

1,文件转化成流,流再转化成文件

2,解析文件,对应格式的文件解析类,解析文件流,获取文件流中的数据,反之java生成对应的流用对应的文件解析器生成文件

例如excl

 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is.getInputStream());

 // 创建可写入的Excel工作薄

 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("C:/temp/"+is.getOriginalFilename()));

扫描二维码关注公众号,回复: 206740 查看本文章

图片:

页面直接<img  src="" />

下载:

文件变成流response回页面, 

//2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)(包括后缀)

response.setHeader("Content-Disposition", "attachment;fileName="+fileUrl);

@RequestMapping(value = "/downLoad")

    public String getObject(@RequestParam("fileUrl") String fileUrl,HttpServletRequest req, HttpServletResponse resp) throws Exception {

        InputStream is = new FileInputStream(fileUrl);

        HttpServletResponse response = resp;

        ServletOutputStream out = null;

        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();

        try {

            byte[] buf = new byte[16384];

            int bytesRead;

            while ((bytesRead = is.read(buf, 0, buf.length)) >= 0) {

                swapStream.write(buf, 0,bytesRead);

            }

            // Close the input stream.

            is.close();

            byte[] in_b = swapStream.toByteArray();

            response.setContentType("multipart/form-data");

            //2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)

            response.setHeader("Content-Disposition", "attachment;fileName="+fileUrl);

            out = response.getOutputStream();

            out.write(in_b);

            out.flush();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            swapStream.close();

            if (out != null) {

                try {

                    out.close();

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

            if (response != null) {

                try {

                    response.flushBuffer();

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

        }

        return null;

    }

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2404962