精华内容
下载资源
问答
  • Java 实现文件下载
    千次阅读
    2021-07-13 10:40:24
        public void downloadArticle(String folderPath, String articleName, HttpServletResponse response) {
            FileInputStream inputStream = null;
            OutputStream out = null;
            try {
                response.reset();
                response.setContentType("application/force-download");
                // 支持中文名称文件,需要对header进行单独设置,不然下载的文件名会出现乱码或者无法显示的情况
                // 设置响应头,控制浏览器下载该文件
                response.setHeader("Content-Disposition", "attachment;filename=" + UUIDUtils.getUUID() +".pdf");
                //通过文件路径获得File对象
                File file = new File(filePath + folderPath+"/"+articleName+".pdf");
                inputStream = new FileInputStream(file);
                //通过response获取ServletOutputStream对象(out)
                out = response.getOutputStream();
                int length = 0;
                byte[] buffer = new byte[1024];
                while ((length = inputStream.read(buffer)) != -1) {
                    //4.写到输出流(out)中
                    out.write(buffer, 0, length);
                }
                inputStream.close();
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    更多相关内容
  • java实现文件下载

    2013-08-06 12:00:11
    java实现文件上传下载,struts2实现的文件上传下载~!
  • Java实现文件下载功能

    2012-02-25 18:03:13
    Java实现文件下载功能,以WORD文档方式展现给用户看。
  • JAVA实现文件下载

    2012-12-24 10:58:40
    JAVA代码,通过文件名及文件路径实现本地文件下载
  • java实现文件重命名

    2020-08-24 19:32:41
    主要为大家详细介绍了java实现文件重命名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 件上传和下载是web开发中常遇到的问题。今天小编给大家分享下Java Web实现文件下载和乱码处理方法的相关资料,需要的朋友可以参考下
  • 主要为大家详细介绍了java实现批量下载、将多文件打包成zip格式下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java实现文件下载,并弹出保存对话框(Excel)
  • 主要介绍了java实现文件上传、下载、图片预览,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要为大家详细介绍了java实现从网络下载多个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java实现基于http协议的网络文件下载
  • 该代码是一个使用Java开发的上传下载的一个demo,一共有两种方法,第一种是使用最基础的IO流进行文件的上传,可以了解一下原理。第二种是使用apache的commons-IO包进行文件的上传,其实只要了解了这两种上传文件的...
  • java 实现文件下载进度条

    千次阅读 2020-09-02 17:16:09
    计算不同用户的下载进度 import java.io.*; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; public class ProgressBarThread implements Runnable { private ArrayList<...

    计算不同用户的下载进度

    import java.io.*;
    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.HashMap;
    
    public class ProgressBarThread implements Runnable {
    
        private ArrayList<Integer> proList = new ArrayList<Integer>();
        private int progress;//当前进度
        private int totalSize;//下载文法总大小
        private boolean run = true;
        private int showProgress;
        public static HashMap<String, Integer> progressMap = new HashMap<>();//各用户的下载进度
        public static HashMap<String, Boolean> executeStatusMap = new HashMap<>();//各用户是否下载中
        private Long fileId;
        private String token;
    
        public ProgressBarThread(int totalSize, Long fileId, String token) {
            this.totalSize = totalSize;
            this.fileId = fileId;
            this.token = token;
            //创建进度条时,将指定用户的执行状态改为true
            executeStatusMap.put(token, true);
        }
    
        /**
         * @param progress 进度
         */
        public void updateProgress(int progress) {
            synchronized (this.proList) {
                if (this.run) {
                    this.proList.add(progress);
                    this.proList.notify();
                }
            }
        }
    
        public void finish() {
            this.run = false;
            //关闭进度条
        }
    
        @Override
        public void run() {
            synchronized (this.proList) {
                try {
                    while (this.run) {
                        if (this.proList.size() == 0) {
                            this.proList.wait();
                        }
                        synchronized (proList) {
                            this.progress += this.proList.remove(0);
                            //更新进度条
                            showProgress = (int) ((new BigDecimal((float) this.progress / this.totalSize).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()) * 100);
                            progressMap.put(token + fileId, showProgress);
                            if (showProgress == 100) {
                                //进度100%时将用户的执行状态改为false
                                executeStatusMap.put(token, false);
                            }
                            System.err.println("当前进度:"+showProgress+"%");
                        }
                    }
                    System.err.println("下载完成");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) {
            try {
                File file = new File("C:/Users/mfy/Desktop/蜜雪冰城.pdf");
                FileInputStream fis = new FileInputStream(file);
                FileOutputStream fos = new FileOutputStream("D:/nms/img/蜜雪冰城.pdf");
                ProgressBarThread pbt = new ProgressBarThread((int) file.length(), 1L, "000001");//创建进度条
                new Thread(pbt).start();//开启线程,刷新进度条
                byte[] buf = new byte[1024];
                int size = 0;
                while ((size = fis.read(buf)) > -1) {//循环读取
                    fos.write(buf, 0, size);
                    pbt.updateProgress(size);//写完一次,更新进度条
                }
                pbt.finish();//文件读取完成,关闭进度条
                fos.flush();
                fos.close();
                fis.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
    

    获取获取下载进度,可以通过webSocket推送,也可以前端定时调用

        public HzRestResult getProgress(String fileId, HttpServletRequest request) {
            String token = request.getHeader("token");
            Integer progress = ProgressBarThread.progressMap.get(token + fileId);
            if (progress == null) {
                return HzRestResult.getFailed("该任务不存在!");
            }
             if(progress.equals(100)){
                //进度100%时清除指定map
                ProgressBarThread.progressMap.remove(token + fileId);
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("fileId", fileId);
            jsonObject.put("token", token);
            jsonObject.put("progress", progress);
            return HzRestResult.getSuccess(jsonObject);
        }
    
    展开全文
  • 主要为大家详细介绍了基于Java文件输入输出流实现文件上传下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了Java实现文件上传下载的三种解决方案的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 主要介绍了Java上传下载文件实现加密解密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 有时候我们想点击一张图片的超链接就进行下载...一起看看如何用java实现文件下载功能吧。 分析思路: 1. 让下载界面传参的时候指定文件名:方法是修改href,我们不光要指定跳转路径,还要在后面加上响应的参数 ...

    一. 需求 

    有时候我们想点击一张图片的超链接就进行下载而不是跳转到这张图片进行显示该怎么做呢?用java实现下载功能呗,并且只要设置Http响应的响应头就可以让他无论何时以何种方式点击超链接就进行下载。一起看看如何用java实现文件下载功能吧。

    二. 分析思路

    1. 让下载界面传参的时候指定文件名:方法是修改href,我们不光要指定跳转路径,还要在后面加上响应的参数

                                                                  ?filename=test1.jpg

    2. 在servlet用接收传来的文件名,通过文件名获取真实(服务器)路径:真实路径不知道是啥的点右边 ——> 带你飞

    3. 在将文件加载进内存前先指定响应头,让他实现始终下载而不直接在浏览器显示的功能。

    4. 使用流将文件加载进内存并实现下载功能

    三. 代码实现


    下载界面:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <a href="/demo10?filename=test1.jpg">
            download img
        </a>
    </body>
    </html>

     实现下载功能:

    package cn.it.np;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    
    @WebServlet("/demo10")
    public class demo10 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //1.接收文件名
            String file = req.getParameter("filename");
    
            //2.将文件加载进内存
            //  获取文件的服务器路径
            ServletContext servletContext = this.getServletContext();
            String realPath = servletContext.getRealPath("/photo/"+ file);
    
            //3.使用流进行下载
            //  设置响应头类型:content-type , 对应 MimeType对象
            String mimeType = servletContext.getMimeType(file);
            resp.setHeader("content-type",mimeType);
            //  设置请求头打开方式:content-disposition ,对应 attachment附件形式打开
            resp.setHeader("content-disposition","attachment;filename=" + file);
    
            //  用字节流关联
            FileInputStream fis = new FileInputStream(realPath);
            //  将输入流的数据写出到输出流中
            ServletOutputStream outputStream = resp.getOutputStream();
            //缓冲区
            byte[] buff = new byte[1024 * 8];
            int len ;
            while((len = fis.read(buff)) != -1){
                outputStream.write(buff,0,len);
            }
    
            try {
                outputStream.close();
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doGet(req,resp);
        }
    }
    

    效果图:

    展开全文
  • 主要介绍了Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,需要的朋友可以参考下
  • 主要介绍了Java response响应体和文件下载实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要为大家详细介绍了java利用oss实现下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java实现文件加密解密

    2016-10-25 10:19:48
    利用java实现将资源文件(包括图片、动画等类型)进行简单的加密、解密
  • Java实现文件下载并解决中文文件名乱码
  • 主要介绍了基于Java写minio客户端实现上传下载文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java实现文件下载Zip压缩

    千次阅读 2021-03-25 16:24:49
    这里实现只是模式本地文件下载Zip,响应的客户端下载 实现思路 创建一个临时文件zip 构建一个Zip文件输出流(临时文件Zip) 从服务读取文件流放入Zip文件输出流 把临时文件Zip写入OutputStream 关闭资源 1. ...

    目录

    一、 概述

    二、代码功能实现


    一、 概述

    开发过程中碰到一个需求,需要将服务器上的多个文件打包为zip,并进行下载响应到客户端,写了一个Demo总结分享一下,如果有错误希望大家指正!

    二、代码功能实现

    这里实现只是模式本地文件下载Zip,响应的客户端下载

    实现思路

    1. 创建一个临时文件zip
    2. 构建一个Zip文件输出流
    3. 从服务读取文件流放入Zip文件输出流
    4. 把临时文件Zip写入OutputStream
    5. 关闭资源

    1. controller

     /**
         * 下载数据包
         *
         * @param response
         * @date: 2021/3/25 15:36
         * @return: void
         */
        @GetMapping("downloadDataZip")
        public void downloadDataZip(HttpServletResponse response) {
    
            String title = "报告源数据包.zip";
            File filePath = new File(FileUtil.getTemplatePath() + File.separator + title);
            List<String> srcFiles = Arrays.asList("20210113001.jpg", "20210113003.jpg", "20210113004.jpg", "瞳孔.txt");
            FileUtil.zipFiles(srcFiles, filePath);
            String filename = System.currentTimeMillis()+"_"+title;
            //设置文件路径
            if (filePath.exists()) {
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                try {
                    response.setContentType("application/octet-stream");
                    response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("utf-8"), "ISO8859-1"));
                    byte[] buffer = new byte[4096];
                    fis = new FileInputStream(filePath);
                    bis = new BufferedInputStream(fis);
                    OutputStream os = response.getOutputStream();
                    int i = bis.read(buffer);
                    while (i != -1) {
                        os.write(buffer, 0, i);
                        i = bis.read(buffer);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (bis != null) {
                        try {
                            bis.close();
                            // 删除临时文件
                            filePath.delete();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (fis != null) {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }

    2. FileUtil

    
    public class FileUtil {
    
    
    
        /**
         * 多图片压缩zip
         *
         * @param srcFiles 图片名称
         * @param zipFile  文件路径
         */
        public static void zipFiles(List<String> srcFiles, File zipFile) {
    
            // 判断压缩后的文件存在不,不存在则创建
            if (!zipFile.exists()) {
                try {
                    zipFile.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            // 创建 FileOutputStream 对象
            FileOutputStream fileOutputStream ;
            // 创建 ZipOutputStream
            ZipOutputStream zipOutputStream ;
            // 创建 FileInputStream 对象
            BufferedInputStream bis = null;
    
            FileInputStream inputStream = null;
    
            try {
                // 实例化 FileOutputStream 对象
                fileOutputStream = new FileOutputStream(zipFile);
                // 实例化 ZipOutputStream 对象
                zipOutputStream = new ZipOutputStream(fileOutputStream);
                // 创建 ZipEntry 对象
                ZipEntry zipEntry ;
                // 遍历源文件数组
                for (String file : srcFiles) {
                    // 将源文件数组中的当前文件读入 FileInputStream 流中
                    String fileName = file;
                    String localFileDir = "D:\\file\\video";
                    fileName = URLDecoder.decode(fileName, "UTF-8");
                    //获取文件输入流  localFileDir是服务端存储文件的路径
                    File files = new File(localFileDir + File.separator + fileName);
                    inputStream = new FileInputStream(files);
                    // 文件后缀名称
                    // 实例化 ZipEntry 对象,源文件数组中的当前文件
                    zipEntry = new ZipEntry(fileName);
                    zipOutputStream.putNextEntry(zipEntry);
                    // 该变量记录每次真正读的字节个数
                    int len;
                    // 定义每次读取的字节数组
                    byte[] buffer = new byte[4096];
                    while ((len = inputStream.read(buffer)) > 0) {
                        zipOutputStream.write(buffer, 0, len);
                    }
    
                }
                zipOutputStream.closeEntry();
                zipOutputStream.close();
    
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (bis != null) {
                        bis.close();
                    }
                    if (inputStream != null) {
                        inputStream.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 获取类路径
         * return 绝对路径地址
         */
        public static String getTemplatePath() {
            String realPath = FileUtil.class.getClassLoader().getResource("").getFile();
            File file = new File(realPath);
            realPath = file.getAbsolutePath();
            try {
                realPath = java.net.URLDecoder.decode(realPath, "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return realPath;
        }
    
    }

    3. 前端页面

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>下载功能</title>
    <!--    <script th:src="@{/js/jquery-3.3.1.js}"></script>-->
        <script src="../static.js/jquery-3.3.1.js"></script>
    </head>
    <body>
    
    <div>
        <h3>下载文件测试</h3>
        <!--    <button type="submit" id="submit">上传</button>-->
        <a href="/order/sendUploadVoice" class="tab-down-button">下载1</a>
        &nbsp; &nbsp; &nbsp;
        <a href="/order/downloadUser" class="tab-down-button">下载2</a>
        &nbsp; &nbsp; &nbsp;
        <a href="/order/downloadDataZip" class="tab-down-button">报告源数据包</a>
        <button type="button" onclick="downloadzip()">按钮下载</button>
        <!--预览图片-->
        <div class="preview_box"></div>
    </div>
    
    <script type="text/javascript">
    
        function downloadzip(){
            window.location.href = "/order/downloadDataZip"
        };
    
    </script>
    </body>
    </html>
    

     

    展开全文
  • @RequestMapping(params = "down") public void down... } catch (Exception e) { } } 详解:把文件的名称传到后台,后台拼接成完成的在服务器上的路径,然后按照上述代码即可完成提示文件保存位置的下载功能。
  • Java实现文件下载

    万次阅读 2017-10-25 12:01:22
    Java实现文件下载
  • Java实现文件与图片的上传下载---3种方式 1)JSP+Servlet; 2)smartUpload; 3)FileUpload;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,439,980
精华内容 975,992
关键字:

java实现文件下载

java 订阅
友情链接: s_tan.rar