//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();
}
}
}
分享到:
相关推荐
对于用户界面,可以显示当前的下载进度、速度等信息,提供暂停、继续、取消等操作。在暂停时,应立即更新服务器上的下载状态,以便下次续传。 8. **安全性考虑**: 为防止恶意用户利用断点续传功能获取服务器上的...
以上就是使用Ajax和Struts实现Java文件上传和下载的基本原理和关键点。在实际开发中,还需要考虑性能优化、安全性增强以及用户体验的提升,例如通过进度条显示上传进度,提供取消上传的功能等。
7. **异常处理**:在文件下载过程中,可能会遇到网络错误、内存不足、磁盘空间不足等各种问题,需要适当的异常处理机制来捕获这些问题并采取相应措施,例如重试、暂停或取消下载。 综上所述,实现Android基于Http...
在Java编程语言中,从网络获取文件是一项基本且重要的任务,尤其对于开发桌面应用程序时。这个场景通常涉及网络I/O操作,HTTP协议的理解以及文件处理。以下是对这一主题的详细阐述: 1. **网络I/O**:Java提供了一...
6. **异常处理**: 文件上传过程中可能出现各种问题,如文件过大、文件类型不合法等,需要进行相应的异常处理。例如,可以设置最大上传文件大小,检测文件扩展名,对错误给出反馈。 7. **安全性考虑**: 需要确保上传...
在Java编程中,实现HTTP多线程下载是一项常见的任务,特别...总的来说,Java实现HTTP多线程下载涉及到了网络编程、多线程、文件操作等多个核心Java技术,理解并掌握这些知识点对于任何Java开发者来说都是非常有价值的。
Java文件上传、删除和下载是Web开发中常见的操作,尤其在使用Struts2框架时。以下是对这些功能的详细说明: ### 文件上传 在Java Web应用中,文件上传通常涉及前端HTML表单和后端Action类。在Struts2框架中,我们...
在这个特定的场景中,我们讨论的是如何使用Struts来实现在Web应用中进行文件的上传和下载功能,并且修复了在下载过程中取消操作可能导致的错误。 文件上传是Web应用中常见的一种需求,比如用户可能需要上传图片、...
总之,Java文件上传组件结合jQuery Upload库提供了一种强大且易于使用的解决方案,它可以帮助开发者快速实现安全、高效的文件上传功能。理解并掌握这些知识点对于任何涉及文件交互的Web应用程序开发都是至关重要的。
总的来说,实现多个文件上传的功能需要对Java Servlet、文件I/O、异常处理和安全策略有深入理解。在实际开发中,可以根据项目需求选择合适的工具和库,如Spring Boot中的`MultipartFile`,或是Apache Commons ...
- **错误处理**:对可能出现的错误情况进行妥善处理,如网络异常、用户取消授权等。 - **用户授权**:在获取用户信息前,必须明确告知用户并获取其授权。 - **缓存策略**:合理设计access_token和refresh_token的...
在这里,我们可以通过`file`参数获取到上传的文件,然后进行保存或者验证等操作。 接下来,`uploadify`插件在客户端负责选择和上传文件。你需要在HTML页面中引入uploadify的相关脚本和样式文件,然后配置其设置,...
实例145 文件的加密/解密操作 217 实例146 复制图片 219 实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的...
实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM存取一体机(线程同步互斥) 437 实例234 我的钱哪里去了 440 实例235 门锁打不开了(死锁) ...
实例145 文件的加密/解密操作 217 实例146 复制图片 219 实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的通讯录类 ...
5. **文件队列管理**:SwfUpload 支持文件队列,用户可以选择多个文件后一次性上传,也可以按需控制文件的上传顺序和取消上传。 **Java 后端处理** 在Java后端,我们需要处理SwfUpload发送的HTTP请求。由于...
导入语句用于引入一个包中的类或接口到当前的Java文件中,这样就可以使用这些类和接口。 #### 静态的 (Static) 静态关键字用来修饰成员变量和成员方法,表示它们属于类而不是对象。 #### 无返回类型 (Void) void...
学习Java包的资料通常涵盖Java核心概念、类库的使用、异常处理、多线程、I/O操作、网络编程、数据库连接等内容。理解并掌握这些知识点是成为一名熟练的Java开发者的基础。通过深入学习和实践,你可以创建复杂的系统...
实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM存取一体机(线程同步互斥) 437 实例234 我的钱哪里去了 440 实例235 门锁打不开了...
实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM存取一体机(线程同步互斥) 437 实例234 我的钱哪里去了 440 实例235 门锁打不开了(死锁) ...