精华内容
下载资源
问答
  • java实现下载文件

    万次阅读 2018-03-02 11:31:14
    通过java代码实现下载功能,代码如下:(输入流和输出流实现)public String download() { response.setContentType("application/x-download");  String filedownload = 文件路径(绝对路径);  ...

    通过java代码实现下载功能,代码如下:(输入流和输出流实现)

    public String download() {
    response.setContentType("application/x-download");  
    String filedownload = 文件路径(绝对路径); 
    String filedisplay = 文件名称;
    filedisplay = URLEncoder.encode(filedisplay,"UTF-8");(如果文件名称加密,使用此代码具有解密功能)
    response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);  
    OutputStream outp = null;  
    FileInputStream in = null;  
      try{  
           outp = response.getOutputStream();  
           in = new FileInputStream(filedownload);  
            byte[] b = new byte[1024];  
               int i = 0;  
             while((i = in.read(b)) > 0)  {  
                  outp.write(b, 0, i);  
            }  
              outp.flush();  
         } catch(Exception e){  
            System.out.println("Error!");  
             e.printStackTrace();  
          }finally{  
               if(in != null)  
                {  
                  try {
    in.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }  
                 in = null;  
               }  
              if(outp != null)  
               {  
                   try {
    outp.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }  
                  outp = null;  
              }  
           } 
      return null;

    }

    还可以通过a链接的方式实现下载功能:
    <a href="<%=basePath %>文件的相对路径?downloadfile=true&可传递参数">下载文件</a>

    展开全文
  • Java实现下载文件到本地

    万次阅读 2018-12-14 21:51:02
    需求 ...(因为涉及多个文件下载前先将文件进行压缩,提供下载压缩文件) 效果预览 代码 主要方法 /** * 下载生成的所有在线/离线用户信息表格 * @param request * @param response * @retur...
        

    需求

    导出文件后存留在了服务器中,需要提供下载按钮,点击后可下载到本地;(因为涉及多个文件,下载前先将文件进行压缩,提供下载压缩文件)

    效果预览

    clipboard.png

    代码

    主要方法

    /**
         * 下载生成的所有在线/离线用户信息表格
         * @param request
         * @param response
         * @return 压缩文件
         * @throws FTPConnectionClosedException
         * @throws IOException
         */
        public File downloadExcel (HttpServletRequest request, HttpServletResponse response) 
                throws FTPConnectionClosedException, IOException {
            //提供下载文件前进行压缩,即服务端生成压缩文件
            File file = new File(zipPath);
            FileOutputStream fos = new FileOutputStream(file);
            ZipUtils.toZip(path, fos, true);
            //1.获取要下载的文件的绝对路径
            String realPath = zipPath;
            //2.获取要下载的文件名
            String fileName = realPath.substring(realPath.lastIndexOf(File.separator)+1);
            response.reset();        
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/octet-stream");
            //3.设置content-disposition响应头控制浏览器以下载的形式打开文件
            response.addHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes(),"utf-8"));
            //获取文件输入流
            InputStream in = new FileInputStream(realPath);
            int len = 0;
            byte[] buffer = new byte[1024];
            OutputStream out = response.getOutputStream();
            while ((len = in.read(buffer)) > 0) {
                //将缓冲区的数据输出到客户端浏览器
                out.write(buffer,0,len);
            }
            in.close();
            return file;
        }

    压缩方法[1]

        public static void toZip(String srcDir, OutputStream out, boolean KeepDirStructure)
                throws RuntimeException{
            long start = System.currentTimeMillis();
            ZipOutputStream zos = null ;
            try {
                zos = new ZipOutputStream(out);
                File sourceFile = new File(srcDir);
                compress(sourceFile,zos,sourceFile.getName(),KeepDirStructure);
                long end = System.currentTimeMillis();
                System.out.println("压缩完成,耗时:" + (end - start) +" ms");
            } catch (Exception e) {
                throw new RuntimeException("zip error from ZipUtils",e);
            }finally{
                if(zos != null){
                    try {
                        zos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }        
        }
        
         * 递归压缩方法
         * @param sourceFile 源文件
         * @param zos        zip输出流
         * @param name       压缩后的名称
         * @param KeepDirStructure  是否保留原来的目录结构,true:保留目录结构; 
         *                          false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
         * @throws Exception
         */
        private static void compress(File sourceFile, ZipOutputStream zos, String name,
                boolean KeepDirStructure) throws Exception{
            byte[] buf = new byte[BUFFER_SIZE];
            if(sourceFile.isFile()){
                // 向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字
                zos.putNextEntry(new ZipEntry(name));
                // copy文件到zip输出流中
                int len;
                FileInputStream in = new FileInputStream(sourceFile);
                while ((len = in.read(buf)) != -1){
                    zos.write(buf, 0, len);
                }
                // Complete the entry
                zos.closeEntry();
                in.close();
            } else {
                File[] listFiles = sourceFile.listFiles();
                if(listFiles == null || listFiles.length == 0){
                    // 需要保留原来的文件结构时,需要对空文件夹进行处理
                    if(KeepDirStructure){
                        // 空文件夹的处理
                        zos.putNextEntry(new ZipEntry(name + "/"));
                        // 没有文件,不需要文件的copy
                        zos.closeEntry();
                    }
                }else {
                    for (File file : listFiles) {
                        // 判断是否需要保留原来的文件结构
                        if (KeepDirStructure) {
                            // 注意:file.getName()前面需要带上父文件夹的名字加一斜杠,
                            // 不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了
                            compress(file, zos, name + "/" + file.getName(),KeepDirStructure);
                        } else {
                            compress(file, zos, file.getName(),KeepDirStructure);
                        }
                        
                    }
                }
            }
        }
    

    SpringMVC

    @Download
        @Path("downloadExcel")
        public File DownloadExcel(HttpServletRequest request, HttpServletResponse response) throws FTPConnectionClosedException, IOException {
            File file = exportXMPPUserInfo.downloadExcel(request, response);
            return file;
        }

    前端

    公司内部写法,理解其中含义即可。

        ...
        <input id="downloadExcel" type="submit" value="下载" />
        ...
        
    <script>
        ...
        //下载excel
        W.$('downloadExcel').on('click',function(e){    
            W.download('userLoginService/downloadExcel');
            /* W.get('userLoginService/downloadExcel').done(function(result){
                console.log("下载用户信息表");
                
            }); */
        }); 
        ...
    </script>

    必要的说明

    目前存在下载中文的文件名出现乱码,但好在不影响其中的内容,只是文件名会乱码。有兴趣的同学可以帮忙解答下。问题链接

    引用

    [1] https://www.cnblogs.com/zeng1... Java实现将文件或者文件夹压缩成zip

    展开全文
  • 下载文件到指定目录 /** * 下载文件到指定目录 * @param dowUrl:http地址 * @param dowPath:指定目录 * */ public static String download(String dowUrl, String dowPath){ try { log.info("下载地址是...

    下载文件到指定目录

    /**
    	 * 下载文件到指定目录
    	 * @param dowUrl:http地址
    	 * @param  dowPath:指定目录
    	 * */
        public static String download(String dowUrl, String dowPath){
            try {
    		log.info("下载地址是:"+dowUrl+",存储地址是:"+dowPath);
                URL url = new URL(dowUrl);
    
                URLConnection urlConnection = url.openConnection();
    
                HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;// http的连接类
    
                //String contentType = httpURLConnection.getContentType();//请求类型,可用来过滤请求,
    
                httpURLConnection.setConnectTimeout(1000*5);//设置超时
    
                httpURLConnection.setRequestMethod("POST");//设置请求方式,默认是GET
    
                httpURLConnection.setRequestProperty("Charset", "UTF-8");// 设置字符编码
    
                httpURLConnection.connect();// 打开连接
    
                BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());
    
                String path = dowPath;// 指定存放位置
                File filed = new File(path);
    
                OutputStream out = new FileOutputStream(filed);
                int size = 0;
    
                byte[] b = new byte[2048];
                //把输入流的文件读取到字节数据b中,然后输出到指定目录的文件
                while ((size = bin.read(b)) != -1) {
                    out.write(b, 0, size);
                }
                // 关闭资源
                bin.close();
                out.close();
    			return "200";
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return "500";
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
    			return "400";
            }
        }
    

    有问题可以留言,大家一起探讨,自己测试没有问题。

    展开全文
  • java实现下载文件到浏览器默认路径

    千次阅读 2020-04-11 10:51:17
    直接在ajax中传path到后台,下载后放在response中返回,会出现错误,因为ajax只接受字符串等类型,不能解析头文件 2、解决: 2.1方案一 可以直接将前台改成超链接,在href中跳转到controller,可以执行下载(但是...

    1、错误方法:

    直接在ajax中传path到后台,下载后放在response中返回,会出现错误,因为ajax只接受字符串等类型,不能解析头文件

    2、解决:

    2.1方案一

    可以直接将前台改成超链接,在href中跳转到controller,可以执行下载(但是这个方法不方便传参),自己尝试在href中传path没有成功

    2.2方案二

    又要传参,又要放在头文件中返回怎么处理呢?

    查阅网上各博客,都说用 window.location.href =代替ajax,但没有具体实施方案

    下面给出自己尝试后成功的例子(思路:先用ajax将参数传到后台,存在session中,在ajax请求成功后,使用window.location.href跳转到执行下载的controller)

    前台:

    $(".fa-download").click(function() {
    			var path = $(this).attr("value");
    			$.ajax({
    	            url: "mail/preDownLoad",
    	            type: "post",
    	            dataType: "text",
    	            data:{"path":path},
    	            success: function (data) {
    	            	alert("成功")
    	                 if (!isEmpty(path)) {
    	                     window.location.href = "mail/downLoad";                         
    	                } else {
    	                   alert("附件路径丢失")
    	                } 
    	            },
    	            error: function (err) {
    	            	alert("下载失败")
    	               /*   $.dialog.alert("下载失败"); */
    	            }
    	        });      
    		});

    后台:

    过渡的controller

    @RequestMapping("/preDownLoad")
    	public String preDownLoad(String path, HttpSession session) {
    		session.setAttribute("path", path);
    		return "message/informationDetails";
    	}

    执行下载的controller

    @RequestMapping("/downLoad")
    	public void downLoad(HttpSession session, HttpServletResponse response) {
    		String path = (String) session.getAttribute("path");
    		// path是指欲下载的文件的路径
    		File file = new File(path);
    		// 取得文件名
    		String filename = file.getName();
    		// 以流的形式下载文件
    		InputStream fis;
    		try {
    			fis = new BufferedInputStream(new FileInputStream(path));
    
    			byte[] buffer = new byte[fis.available()];
    
    			fis.read(buffer);
    
    			fis.close();
    			// 清空response
    			response.reset();
    			// 设置response的Header
    			response.addHeader("Content-disposition", "attachment;filename=" + new String(filename.getBytes()));
    			OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
    			response.setContentType("application/vnd.ms-excel;charset=UTF-8");
    			response.setContentType("application/x-msdownload");
    			toClient.write(buffer);
    			toClient.flush();
    			toClient.close();
    			System.out.println("下载成功");
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}

    参考:https://blog.csdn.net/Gunc_/article/details/72771134

    https://blog.csdn.net/pp_fzp/article/details/78296407

    展开全文
  • Java实现文件下载

    万次阅读 2017-10-25 12:01:22
    Java实现文件下载
  • Java实现在线预览--openOffice实现

    万次阅读 多人点赞 2019-07-31 18:39:57
    Java实现在线预览–openOffice实现
  • java实现高效文件下载

    万次阅读 多人点赞 2018-06-15 22:19:43
    java实现高效文件下载 本文我们介绍几种方法下载文件。从基本JAVA IO 到 NIO包,也介绍第三方库的一些方法,如Async Http Client 和 Apache Commons IO. 最后我们还讨论在连接断开后如何恢复下载。 使用java IO ...
  • java实现远程文件下载

    千次阅读 2019-04-10 22:17:25
    转自JAVA 实现远程文件下载 相信很多同学在实际的项目开发中都会遇到一个问题,如何跨服务下载文件?在传统SSH, SSH2, SSM架构中可能很少遇到这样的问题,但是在当前逐渐流行的微服务架构中,这是一个很常见的问题...
  • Java实现网络文件下载demo

    千次阅读 2019-12-06 16:34:06
    Java实现网络文件下载demo import java.io.*; import java.net.HttpURLConnection; import java.net.URL; /** * @author David * @className testDown * @date 2019/3/29 17:12 */ public class testDown { /...
  • java实现文件下载

    万次阅读 2019-07-07 09:45:31
    原理是使用java.io中的File类打开要下载文件,用输入流将文件读入系统,再将response中的输出流连接到系统,通过输入流和输出流进行文件下载。 在response的响应头中设置下载文件的文件名 /** * 下载文件 * @...
  • java实现在线预览--poi实现word、excel、ppt转html

    万次阅读 多人点赞 2019-07-31 18:39:43
    java实现在线预览- -之poi实现word、excel、ppt转html
  • JAVA实现FTP文件批量下载文件到本地文件夹 /** *FTP文件批量下载文件到本地文件夹 * * @ftpath FTP文件路径 * @ftpname FTP上文件名 * @localfile 本地路径 */ public static void download() { ...
  • Java实现文件下载功能

    千次阅读 2020-03-08 16:46:37
    上一篇介绍了文件上传,传送门:Java实现文件上传功能,这次简单介绍一下文件下载功能 实现思路 文件下载简单来说就是在读取文件的基础上多了一层与HTTP的通信,因此流程的改变如下: 原:与计算机文件系统交互 ...
  • JAVA 实现远程文件下载

    千次阅读 2018-06-16 14:51:11
    相信很多同学在实际的项目开发中都会遇到一个问题,如何跨服务下载文件?在传统SSH,SSH2,SSM架构中可能很少遇到这样的问题,但是在当前逐渐流行的微服务架构中,这是一个很常见的问题。 举个例子,比如你有A服务是...
  • java实现下载pdf文件的时候会对其进行解密(文件是加密的,下载需要解密), 这个解密的过程占用了大量的下载时间,导致文件一直下载太慢,根本就下载不下来, 这个问题怎么解决?
  • java实现文件上传与下载

    万次阅读 2015-08-08 13:59:19
    JAVA文件上传下载知识点整理, 东风化宇,文件上传 一、对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦。 JSP...
  • Java实现下载模板文件

    千次阅读 2020-06-01 20:50:46
    前端js function downloadFile(){ var url=contextPath + '...这就是后台完整的下载模板的代码 @ApiOperation("下载模板") @RequestMapping(value = "/downModel",method = RequestMethod.GET,produces="a.
  • Java代码实现FTP文件下载

    千次阅读 2018-12-21 15:23:35
    下载commons-net-1.4.1.jar包,放到lib下,并加载到.classpath文件中 package common; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;...
  • Java实现文件上传下载工具类

    千次阅读 2017-10-10 08:52:54
    本篇文章在Eclipse环境下采用Java语言实现文件上传下载工具类。上传时,为避免文件名在服务器中重复,采用“服务器时间(定义到毫秒)+文件名+文件后缀“的方式作为服务器上的文件名;下载过程中利用 spring mvc ...
  • JAVA代码实现FTP文件下载

    万次阅读 2016-03-24 23:31:16
    JAVA实现FTP文件下载
  • java实现文件的上传和下载

    万次阅读 2019-05-21 07:48:36
    java实现文件的上传和下载 本文是基于Windows 10系统环境,实现文件的上传和下载: Windows 10 MyEclipse 10 一、文件上传 (1) 文件上传的条件 提交方式:post 表单中有文件上传的表单项: input type="file" ...
  • java实现通过url实现浏览器下载pdf文件 // 下载pdf文件工具类 public static void toDownload(HttpServletRequest request, HttpServletResponse response, Map<String, Object> map) { ServletOutputStream ...
  • Java Response实现文件下载

    万次阅读 2019-05-06 13:18:15
    在开发项目中,有时候需要从服务端下载一个文件到本地,以此对这需求可以使用Response对象(HttpServletResponse)就可以实现文件下载。(注:使用的服务器是tomcat) 首先新建一个JavaWeb项目,在项目上新建一个...
  • 在用java实现下载pdf文件的时候,文件太大下载不下来怎么办,这些pdf文件还是加密的,在下载的过程还需要解密,所以导致文件下载不下来,怎么解决?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,115,447
精华内容 846,178
关键字:

java实现下载文件

java 订阅