`

Java文件下载获取浏览器取消操作异常

阅读更多

//JSP页面调用

function downFile(url,filename){

var encodeURImodelUrl = encodeURI(encodeURI(url));

    var urls = "pltWcsjAction_downFiles.do?downFileName="+filename+"&downFilePath="+encodeURImodelUrl+"";

    location.href = urls;

}

 

 

//java action方法

 

private String downFileName;

private String downFilePath;

 

public void downFiles(){

if(!StringUtil.nullString(downFileName,"").equals("")

&& !StringUtil.nullString(downFilePath,"").equals("")){

String root = ServletActionContext.getRequest().getRealPath("/");

downFile(root+downFilePath,downFileName);

}

}

public void downFile(String path,String filename){

if(StringUtil.nullString(filename,"").equals("") ||

StringUtil.nullString(path,"").equals("") ||

 !new File(path).exists()){

return;

}

HttpServletResponse response = ServletActionContext.getResponse();

 BufferedInputStream bis = null;   

   BufferedOutputStream bos = null;   

   try{   

     File fileInstance = new File(path);   

     if (fileInstance.exists()){

          bis = new BufferedInputStream(new FileInputStream(fileInstance));   

          bos = new BufferedOutputStream(response.getOutputStream());   

          byte[] buff = new byte[2048];   

          response.setContentType("APPLICATION/OCTET-STREAM; charset=UTF-8");   

          response.setHeader("Content-Disposition", "attachment; filename=\"" + java.net.URLEncoder.encode(filename,"utf-8") + "\"");   

          int bytesRead;   

          while (-1 != (bytesRead = bis.read(buff, 0, buff.length))){   

              bos.write(buff, 0, bytesRead);   

          }

        

      }    

   }catch (Exception e){   

    System.out.println("文件下载处理,浏览器取消文件下载!");

    //e.printStackTrace();

   

   }   

   finally{   

 

      if (bos != null){   

        IOUtils.closeQuietly(bos);   

      }   

      if (bis != null){   

        IOUtils.closeQuietly(bis);   

      }

       try {

       

        bos.close();  

bis.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}  

   

  }

}

0
0
分享到:
评论

相关推荐

    java实现下载断点续传

    对于用户界面,可以显示当前的下载进度、速度等信息,提供暂停、继续、取消等操作。在暂停时,应立即更新服务器上的下载状态,以便下次续传。 8. **安全性考虑**: 为防止恶意用户利用断点续传功能获取服务器上的...

    java文件上传、下载

    以上就是使用Ajax和Struts实现Java文件上传和下载的基本原理和关键点。在实际开发中,还需要考虑性能优化、安全性增强以及用户体验的提升,例如通过进度条显示上传进度,提供取消上传的功能等。

    Android实现基于Http协议的文件下载

    7. **异常处理**:在文件下载过程中,可能会遇到网络错误、内存不足、磁盘空间不足等各种问题,需要适当的异常处理机制来捕获这些问题并采取相应措施,例如重试、暂停或取消下载。 综上所述,实现Android基于Http...

    Java从网络取得文件

    在Java编程语言中,从网络获取文件是一项基本且重要的任务,尤其对于开发桌面应用程序时。这个场景通常涉及网络I/O操作,HTTP协议的理解以及文件处理。以下是对这一主题的详细阐述: 1. **网络I/O**:Java提供了一...

    Java 上传文件的源代码

    6. **异常处理**: 文件上传过程中可能出现各种问题,如文件过大、文件类型不合法等,需要进行相应的异常处理。例如,可以设置最大上传文件大小,检测文件扩展名,对错误给出反馈。 7. **安全性考虑**: 需要确保上传...

    使用java实现http多线程下载

    在Java编程中,实现HTTP多线程下载是一项常见的任务,特别...总的来说,Java实现HTTP多线程下载涉及到了网络编程、多线程、文件操作等多个核心Java技术,理解并掌握这些知识点对于任何Java开发者来说都是非常有价值的。

    java文件上传、删除、下载的通用方法总结.pdf

    Java文件上传、删除和下载是Web开发中常见的操作,尤其在使用Struts2框架时。以下是对这些功能的详细说明: ### 文件上传 在Java Web应用中,文件上传通常涉及前端HTML表单和后端Action类。在Struts2框架中,我们...

    Struts实现文件上传、下载(导入直接运行)

    在这个特定的场景中,我们讨论的是如何使用Struts来实现在Web应用中进行文件的上传和下载功能,并且修复了在下载过程中取消操作可能导致的错误。 文件上传是Web应用中常见的一种需求,比如用户可能需要上传图片、...

    文件上传组件.zip java

    总之,Java文件上传组件结合jQuery Upload库提供了一种强大且易于使用的解决方案,它可以帮助开发者快速实现安全、高效的文件上传功能。理解并掌握这些知识点对于任何涉及文件交互的Web应用程序开发都是至关重要的。

    多个文件上传

    总的来说,实现多个文件上传的功能需要对Java Servlet、文件I/O、异常处理和安全策略有深入理解。在实际开发中,可以根据项目需求选择合适的工具和库,如Spring Boot中的`MultipartFile`,或是Apache Commons ...

    java源码 钉钉扫码登陆 示例源码 2018127

    - **错误处理**:对可能出现的错误情况进行妥善处理,如网络异常、用户取消授权等。 - **用户授权**:在获取用户信息前,必须明确告知用户并获取其授权。 - **缓存策略**:合理设计access_token和refresh_token的...

    java 附件上传

    在这里,我们可以通过`file`参数获取到上传的文件,然后进行保存或者验证等操作。 接下来,`uploadify`插件在客户端负责选择和上传文件。你需要在HTML页面中引入uploadify的相关脚本和样式文件,然后配置其设置,...

    java范例开发大全源代码

     实例145 文件的加密/解密操作 217  实例146 复制图片 219  实例147 随机读写Java类文件 221  第3篇 Java面向对象编程  第8章 面向对象(教学视频:72分钟) 226  8.1 类 226  实例148 简单的...

    java范例开发大全

    实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM存取一体机(线程同步互斥) 437 实例234 我的钱哪里去了 440 实例235 门锁打不开了(死锁) ...

    Java范例开发大全 (源程序)

     实例145 文件的加密/解密操作 217  实例146 复制图片 219  实例147 随机读写Java类文件 221  第3篇 Java面向对象编程  第8章 面向对象(教学视频:72分钟) 226  8.1 类 226  实例148 简单的通讯录类 ...

    多文件上传swfupload

    5. **文件队列管理**:SwfUpload 支持文件队列,用户可以选择多个文件后一次性上传,也可以按需控制文件的上传顺序和取消上传。 **Java 后端处理** 在Java后端,我们需要处理SwfUpload发送的HTTP请求。由于...

    java常用单词

    导入语句用于引入一个包中的类或接口到当前的Java文件中,这样就可以使用这些类和接口。 #### 静态的 (Static) 静态关键字用来修饰成员变量和成员方法,表示它们属于类而不是对象。 #### 无返回类型 (Void) void...

    java学习帮助

    学习Java包的资料通常涵盖Java核心概念、类库的使用、异常处理、多线程、I/O操作、网络编程、数据库连接等内容。理解并掌握这些知识点是成为一名熟练的Java开发者的基础。通过深入学习和实践,你可以创建复杂的系统...

    Java范例开发大全(全书源程序)

    实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM存取一体机(线程同步互斥) 437 实例234 我的钱哪里去了 440 实例235 门锁打不开了...

    java范例开发大全(pdf&源码)

    实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM存取一体机(线程同步互斥) 437 实例234 我的钱哪里去了 440 实例235 门锁打不开了(死锁) ...

Global site tag (gtag.js) - Google Analytics