- 浏览: 204560 次
- 性别:
- 来自: 湖南
文章分类
最新评论
有针性的下载,实现strust文件下载,action控制如下:
jsp读取资源如下:
/* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package org.topxp.struts; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; /** * MyEclipse Struts * Creation date: 10-01-2007 * * XDoclet definition: * @struts.action * @struts.action-forward name="index" path="/resources/index.jsp" */ public class DownloadServerAction extends DispatchAction { @Override protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //读取资源,并提供下载 DownloadServerActionForm df = (DownloadServerActionForm)form; File root = new File("/"); if(df.getName() != null && !df.getName().equals("")){ root = new File(df.getName()); } request.setAttribute("path", root.getPath()); //提供下载 if(root.isFile()){ java.io.File f = root; java.io.FileInputStream fis = new java.io.FileInputStream(f); response.reset(); response.setHeader("Server", "playyuer@Microshaoft.com"); //告诉客户端允许断点续传多线程连接下载 //响应的格式是: //Accept-Ranges: bytes response.setHeader("Accept-Ranges", "bytes"); long p = 0; long l = 0; //l = raf.length(); l = f.length(); //如果是第一次下,还没有断点续传,状态是默认的 200,无需显式设置 //响应的格式是: //HTTP/1.1 200 OK if (request.getHeader("Range") != null) //客户端请求的下载的文件块的开始字节 { //如果是下载文件的范围而不是全部,向客户端声明支持并开始文件块下载 //要设置状态 //响应的格式是: //HTTP/1.1 206 Partial Content response.setStatus(javax.servlet.http.HttpServletResponse.SC_PARTIAL_CONTENT);//206 //从请求中得到开始的字节 //请求的格式是: //Range: bytes=[文件块的开始字节]- p = Long.parseLong(request.getHeader("Range").replaceAll("bytes=","").replaceAll("-","")); } //下载的文件(或块)长度 //响应的格式是: //Content-Length: [文件的总大小] - [客户端请求的下载的文件块的开始字节] response.setHeader("Content-Length", new Long(l - p).toString()); if (p != 0) { //不是从最开始下载, //响应的格式是: //Content-Range: bytes [文件块的开始字节]-[文件的总大小 - 1]/[文件的总大小] response.setHeader("Content-Range","bytes " + new Long(p).toString() + "-" + new Long(l -1).toString() + "/" + new Long(l).toString()); } //response.setHeader("Connection", "Close"); //如果有此句话不能用 IE 直接下载 //使客户端直接下载 //响应的格式是: //Content-Type: application/octet-stream response.setContentType("application/octet-stream"); //为客户端下载指定默认的下载文件名称 //响应的格式是: //Content-Disposition: attachment;filename="[文件名]" //response.setHeader("Content-Disposition", "attachment;filename=\"" + s.substring(s.lastIndexOf("\\") + 1) + "\""); //经测试 RandomAccessFile 也可以实现,有兴趣可将注释去掉,并注释掉 FileInputStream 版本的语句 String downloadname = URLEncoder.encode(f.getName()); response.setHeader("Content-Disposition", "attachment;filename=\"" + downloadname + "\""); //raf.seek(p); fis.skip(p); byte[] b = new byte[1024]; int i; //while ( (i = raf.read(b)) != -1 ) //经测试 RandomAccessFile 也可以实现,有兴趣可将注释去掉,并注释掉 FileInputStream 版本的语句 while ( (i = fis.read(b)) != -1 ) { response.getOutputStream().write(b,0,i); } //raf.close();//经测试 RandomAccessFile 也可以实现,有兴趣可将注释去掉,并注释掉 FileInputStream 版本的语句 fis.close(); return null; }else{ File[] files = root.listFiles(); if(root.getParentFile() != null){ String parentPath = root.getParentFile().getPath(); request.setAttribute("parent", parentPath); }else{ request.setAttribute("parent", root.getPath()); } request.setAttribute("files", files); } return mapping.findForward("index"); } }
jsp读取资源如下:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> ${path } 【<a href="resources.do?name=${parent }">返回</a>】 <hr> <c:forEach items="${files}" var="file"> <a href="resources.do?name=${file.path }">${file.name }</a> <br> </c:forEach> </body> </html>
- downloadserver.zip (1.6 MB)
- 下载次数: 1
发表评论
-
领导首页页面
2012-11-30 19:57 0<%@ page language="ja ... -
Hibernate Annotation应用
2012-05-04 10:46 1533@Entity @Table @Id @Column @Tra ... -
服务器证书安装配置指南(Weblogic)
2012-04-24 12:20 1128一、 生成证书请求 1. 安装JDK(可选) We ... -
jsp 导出excel
2011-09-21 21:41 1492excel文件是可以在jsp响应,通过输出相应xml,即可得到 ... -
eclipse相关插件安装
2011-06-15 20:02 10671.tomcatPluginV321.zip tomcat部 ... -
流程控制应用JPBM
2011-06-04 14:48 1613工作流(流程控制应用) 什么是工作流? 工作流是业务流程自动化 ... -
网上支付
2011-03-28 12:57 3160两种接入方案 相接与银 ... -
Hibernate Annotation
2011-03-01 08:54 1136简介: 在过去几年里,Hibernate不断发展,几乎成为Ja ... -
在Struts 2中实现文件上传
2011-02-11 16:09 858Struts 2是通过Commons FileUpload文件 ... -
Java加密技术
2010-12-31 11:51 759本篇内容简要介绍几种方法源码文件 如基本的单向加密 ... -
电子邮件开发应用
2010-12-20 12:48 9751.电子邮件发送 /* * html 电子邮件发送 ... -
Struts 2与AJAX
2010-12-18 08:29 656在当今——Web 2.0概念铺天盖地的Internet环境下, ... -
Strus 2的新表单标志的使用
2010-12-17 09:10 793Struts 2为大家提供了不少常用的很酷的表单标志,简化了我 ... -
Struts 2中的OGNL
2010-12-16 08:28 642本人是一个EL(Expression ... -
在Struts 2中实现CRUD
2010-12-15 08:08 765CRUD是Create(创建)、Read(读取)、Update ... -
在Struts 2中实现文件上传
2010-12-14 08:34 847实现原理 Struts 2是通过Commons FileUpl ... -
在Struts 2中实现IoC
2010-12-13 07:58 848IoC(Inversion of Control,以下译为控制 ... -
Struts 2的基石——拦截器(Interceptor)
2010-12-11 08:23 815首先,要跟大家道个歉 ... -
在Struts 2.0中实现表单数据校验(Validation)
2010-12-10 09:45 790在写前几篇文章的时候,有些朋友建议我的写一篇关于表单数据校验的 ... -
转换器(Converter)——Struts 2.0中的魔术师
2010-12-09 08:20 682在我已往的Struts 1.x项目经验中,有个问题不时的出现— ...
相关推荐
本教程将详细讲解如何使用C#在ASP.NET环境中实现FTP远程下载文件到指定的本地盘符。 首先,要进行FTP远程下载,你需要引入`System.Net`命名空间,它包含`FtpWebRequest`和`FtpWebResponse`类,这两个类是FTP操作的...
openwrt 远程下载教程 OpenWRT 是一个开源的、基于 Linux 的路由器操作系统,支持大量的路由器硬件平台。OpenWRT 的主要特点是高度可定制、灵活、稳定和安全。使用 OpenWRT,可以轻松实现路由器的远程下载功能,...
远程设置,远程下载应用。远程操作控制,可控制多台。多线程应用远方使用者能对本地调制解调器的参数进行设置。 远程设置应用程序可利用在计算机上进行简单而速效的参数设定来快速地设置本设备。当启动此应用程序后...
STM32远程下载技术是一种通过网络对嵌入式设备进行固件更新或程序升级的方法,这对于设备维护和软件迭代至关重要。STM32是意法半导体(STMicroelectronics)推出的一系列基于ARM Cortex-M内核的微控制器,广泛应用于...
【迅雷Linux远程下载】是迅雷公司针对Linux操作系统推出的一款专门用于远程下载的工具,旨在为用户在智能家居环境中,如网络电视等设备上提供便捷的下载服务。这款工具允许用户通过Linux系统远程控制下载任务,无论...
PLC远程下载调试虚拟串口工具用于PLC远程下载、PLC远程调试、PLC远程维护。通过PLC远程下载调试虚拟串口工具,工程师不需要到现场,可以远程通过网络,配合PLC远程网关D225等设备对PLC进行维护。
远程下载音频文件(远程音频读取,回写下载到本地) 已经自测没有问题
【S7200 SMART PLC远程下载教程】主要讲解了如何通过网口对S7-200 SMART PLC进行远程的程序上载、下载、监控和梯形图监控操作。以下是对教程内容的详细说明: 1. **配置GRM模块**: - GRM模块作为通讯桥梁,需要...
本文将详细介绍基于STM32F4控制器的程序远程下载技术的实现方法及其重要性。 首先,我们需要了解STM32F4控制器的核心优势。基于ARM Cortex-M4核心的STM32F4系列微控制器,不仅提供了卓越的运行速度和信号处理能力,...
在某些特殊的场合单片机程序、软件需要进行远程下载,特别是单片机程序的远程升级。本文介绍一种使用串口转以太网模块ZLSN3000来实现51单片机(特别是STC单片机)、PIC单片机、ARM、AVR、PLC的程序远程升级的方法。
在IT领域,远程下载是一种常见的网络操作,它允许用户通过互联网从远程服务器获取文件,而无需实际访问该服务器。在本案例中,我们讨论的是使用Visual Basic(VB)编程语言实现远程下载,特别是针对音频文件的下载。...
本工具能实现ftp远程下载,只需远程机器用户名密码以及目标机器目录地址、目的机器目录地址
在IT领域,远程下载是一种常见的数据获取方式,尤其在移动设备和计算机系统中,当我们需要安装应用程序或获取大型文件时,远程下载显得尤为重要。本示例将深入探讨如何通过远程下载来取得远程文件,并在下载完成后,...
远程下载不再难"这一主题旨在介绍如何利用这种技术来轻松实现远程下载,使得不论你身在何处,都能便捷地访问和下载所需的文件。 首先,我们要理解远程控制的基础概念。远程控制软件允许一台计算机(客户端)通过...
本帖子针对的是51系列单片机。远程给单片机下载程序的前提是单片机支持IAP功能,我用是IAP11L62X型号单片机,隶属STC11系列,这...另外单片机实现远程下载的之前的先烧录文件里的IAPISP程序。代码已经本人测试过有效。
PowerShell远程下载Cradle发生器和混淆器
【华为荣耀立方绑定迅雷远程下载】 华为荣耀立方是一款集成了智能路由器功能的设备,它允许用户通过绑定迅雷远程下载服务,实现离线下载的功能。这样,即使您不在家,也可以通过网络控制荣耀立方进行资源下载,方便...
例如,我们可以创建一个名为`DownloadService`的接口,里面有一个`downloadFile(String fileName)`方法,用于远程下载文件。 ```java public interface DownloadService extends Remote { void downloadFile...
LiveUpdate.exe 远程下载上传