zoukankan      html  css  js  c++  java
  • Java通过网络图片之地址,下载到服务器

    @RequestMapping("/downloadTableQrcode")
        public String downloadTableQrcode(HttpServletRequest request, HttpServletResponse response, @RequestParam String name, @RequestParam String url) throws Exception {
            try {
                response.setContentType("application/zip");
                String fileName = new String(name.getBytes(), "ISO8859-1"); //正确,不发生乱码
                response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".jpg");
                javax.servlet.ServletOutputStream out = response.getOutputStream();
                downloadPicture(url, request.getSession().getServletContext().getRealPath("/") + "downloadTableQrcode.jpg");
                File file = null;
                file = new File(request.getSession().getServletContext().getRealPath("/") + "downloadTableQrcode.jpg");
                InputStream inputStream = new FileInputStream(file);
                int b = 0;
                byte[] buffer = new byte[1000000];
                while (b != -1) {
                    b = inputStream.read(buffer);
                    if (b != -1) out.write(buffer, 0, b);
                }
                inputStream.close();
                out.close();
                out.flush();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
            }
                return "https://linliny.com:8443/superllny/downloadTableQrcode.jpg";
        }
    
        //链接url下载图片
        public static void downloadPicture(String urlList, String path) {
            log.info("path==================="+path);
            URL url = null;
            try {
                url = new URL(urlList);
                DataInputStream dataInputStream = new DataInputStream(url.openStream());
    
    
                FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
                ByteArrayOutputStream output = new ByteArrayOutputStream();
    
    
                byte[] buffer = new byte[1024];
                int length;
    
    
                while ((length = dataInputStream.read(buffer)) > 0) {
                    output.write(buffer, 0, length);
                }
                fileOutputStream.write(output.toByteArray());
                dataInputStream.close();
                fileOutputStream.close();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    java程序员究竟应该掌握点什么
    Java程序员集合框架面试题
    数组名和数组名取地址的区别
    二维、三维数组转一维数组
    函数指针 行指针 指针数组
    转:如何成为一个优秀的程序员
    转:最小堆的数组实现
    for_each使用方法详解[转]
    c++虚函数的作用是什么?
    转:C语言 可变参数
  • 原文地址:https://www.cnblogs.com/tomingto/p/12487283.html
Copyright © 2011-2022 走看看