下载 sdk struts java

简介:           application/octet-stream;charset=ISO-8859-1 attachment;fileName="${fileName}" downloadFil...

 

 

 

 

 

<action name="sdkDownload" class="com.curiousby.sdkDownload">
			<!-- result的Type必须为stream -->
			<result name="success"  type="stream">
				<param name="contentType">
					application/octet-stream;charset=ISO-8859-1
				</param>
				<param name="contentDisposition">attachment;fileName="${fileName}"</param>
				<param name="inputName">downloadFile</param>
			</result>
		</action>

 

 

 

public class sdkDownload extends ActionSupport {

	private static final long serialVersionUID = -3000992581173343335L;
	private static Logger logger = Logger.getLogger(sdkDownload.class);
	private String fileName;
	private String realPath;

	/*
	 * @getFileName 此方法对应的是struts.xml文件中的: <param
	 * name="contentDisposition">attachment;filename="${fileName}"</param>
	 * 这个属性设置的是下载工具下载文件时显示的文件名, 要想正确的显示中文文件名,我们需要对fileName再次编码
	 * 否则中文名文件将出现乱码,或无法下载的情况
	 */
	public String getFileName() throws UnsupportedEncodingException {
		fileName = new String(fileName.getBytes(), "ISO-8859-1");
		return fileName;
	}

	public void setFileName() {
		String fname = ServletActionContext.getRequest().getParameter(
				"fileName");
		try {
			fname = new String(fname.getBytes("ISO-8859-1"), "UTF-8");
		} catch (Exception e) {
			e.printStackTrace();
		}
		this.fileName = fname;
	}

	public InputStream getDownloadFile() {
		this.setFileName();
		String name = ServletActionContext.getRequest().getParameter("name");
		try {
			name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		realPath = "/"+"download"+"/" + "/" + name;
		return ServletActionContext.getServletContext().getResourceAsStream(realPath);
	}
	

	//sdk的下载目前不涉及到控制权限
	@Override
	public String execute() throws Exception {
		logger.info("excute");
		
		//get fileName fisrt
		this.setFileName();
		String name = ServletActionContext.getRequest().getParameter("name");
		try {
			name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		realPath = "/"+"download"+"/" + "/" + name;
		
		// 文件下载目录路径  
		String downloadDir = ServletActionContext.getServletContext().getRealPath("/download");  
		// 文件下载路径 
		String downloadFile = ServletActionContext.getServletContext().getRealPath(realPath);
		java.io.File file = new java.io.File(downloadFile);  
		downloadFile = file.getCanonicalPath();// 真实文件路径,去掉里面的..等信息 
		// 发现企图下载不在 /download 下的文件, 就显示空内容 
		if(!downloadFile.startsWith(downloadDir))
		{  
			//放置修改路径下载web.xml文件
			//return  error
			return null; 
		}
		return SUCCESS;
	}
}

 

	<a class="versionTitleA" href="<%=request.getContextPath()%>/user/sdkDownload?name=air_ios_sdk.zip&fileName=air_ios_sdk.zip">iOS 版</a>
       							

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

目录
相关文章
|
21天前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
296 4
|
23天前
|
Java API 开发工具
百宝箱开放平台 ✖️ Java SDK
百宝箱提供Java SDK,支持开发者集成其开放能力。需先发布应用,准备Java 8+及Maven环境,通过添加依赖安装SDK,并初始化客户端调用对话型或生成型智能体,实现会话管理、消息查询与文件上传等功能。
1180 0
百宝箱开放平台 ✖️ Java SDK
|
5月前
|
存储 Java API
MinIO Java SDK 7.1.4 升级到 8.5.17 需要注意什么
现在我需要你帮我分析对比这个两个sdk在对外的接口设计上是否有不兼容的变更
418 5
|
4月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
270 0
|
5月前
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
135 4
|
9月前
|
Linux 网络安全 Docker
尼恩一键开发环境: vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)
尼恩提供了一系列文章,旨在帮助开发者轻松搭建一键开发环境,涵盖Java分布式、高并发场景下的多种技术组件安装与配置。内容包括但不限于Windows和CentOS虚拟机的安装与排坑指南、MySQL、Kafka、Redis、Zookeeper等关键组件在Linux环境下的部署教程,并附带详细的视频指导。此外,还特别介绍了Vagrant这一虚拟环境部署工具,
尼恩一键开发环境: vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)
|
8月前
|
存储 XML 开发工具
【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
本文介绍了如何在Azure上使用App Service作为反向代理,以自定义域名访问Storage Account。主要内容包括: 1. **设置反向代理**:通过配置`applicationhost.xdt`和`web.config`文件,启用IIS代理功能并设置重写规则。 2. **验证访问**:测试原生URL和自定义域名的访问效果,确保两者均可正常访问Storage Account。 3. **.NET SDK连接**:使用共享访问签名(SAS URL)初始化BlobServiceClient对象,实现通过自定义域名访问存储服务。
131 1
|
11月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
334 34
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
836 4
|
存储 Java Windows
Java21 JDK下载安装及Windows环境变量配置
JDK是Java的开发工具包,要进行Java学习或开发之前,需先下载安装,下载地址如下:提示:这网址里面有三个扩展名的文件,分别是“.zip”、“.exe”和“.msi”,鄙人选择的是.exe的文件,下方的安装和环境的配置也是安装该文件的安装程序进行的。
2849 2