Struts2实现文件下载功能代码分享(文件名中文转码)_java

struts2文件下载功能实现代码如下所示:

Action文件

public class DownLoadAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 5879762231742395104L;
private String fileName;//用户请求的文件名
private String inputPath;//下载资源的路径(在struts配置文件中设置)
public void setInputPath(String inputPath) {
this.inputPath = inputPath;
}
public String getInputPath() {
return inputPath;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileName() {
return fileName;
}
public String downloadFile() throws Exception {
ServletContext context = ServletActionContext.getServletContext();
String downloadDir = context.getRealPath("/upload");
String downloadFile = context.getRealPath(inputPath);
//防止用户请求不安全的资源
if(!downloadFile.startsWith(downloadDir)) {
return null;
}
return "download_success";
}
/*
* 获取输入流资源
*/
public InputStream getInputStream() throws Exception {
String path = inputPath + File.separatorChar + new String(fileName.getBytes("ISO-8859-1"), "UTF-8");
return ServletActionContext.getServletContext().getResourceAsStream(path);
}
/*
* 获取下载时文件默认的文件名
*/
public String getDownloadFileName() {
String downloadFileName = fileName;
try {
downloadFileName = URLEncoder.encode(downloadFileName, "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.getMessage();
e.printStackTrace();
}
return downloadFileName;
}
} 

jsp文件:

<li>
<a href="<%=path%>/download_DownLoadAction_downloadFile.action?fileName=dwr.jar">dwr.jar文件下在</a>
</li>
<li>
<a href="<%=path%>/download_DownLoadAction_downloadFile.action?fileName=Struts2教程.pdf">Struts2教程.pdf文件下在</a>
</li> 

struts.xml:

<action name="download_*_*" class="com.wang.action.{1}" method="{2}">
<param name="inputPath">/upload</param>
<!-- result type设置为stream -->
<result name="download_success" type="stream">
<!-- MIME类型 -->
<param name="contentType">application/octet-stream</param>
<!-- inputName的值与action获取输入流资源的方法名相对应(action中定义getInputStream方法,并且返回类型为InputStream) -->
<param name="inputName">inputStream</param>
<!-- 设置带附件的文件 动态获取文件名(action中定义getDownloadFileName方法) -->
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<!-- 设置缓冲大小 -->
<param name="bufferSize">2048</param>
</result>
</action> 

以上所述是小编给大家介绍的Struts2实现文件下载功能代码分享(文件名中文转码)的相关内容,希望对大家有所帮助!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件名转码
文件名转码、linux 文件名转码、struts2 转码、文件名批量转码、php 文件名转码,以便于您获取更多的相关知识。

时间: 2024-09-08 05:51:53

Struts2实现文件下载功能代码分享(文件名中文转码)_java的相关文章

手机开发必备技巧:javascript及CSS功能代码分享

这篇文章主要介绍了手机开发必备技巧:javascript及CSS功能代码分享,本文讲解了viewport(可视区域)操作.链接操作.javascript事件等内容,需要的朋友可以参考下     1. viewport: 也就是可视区域.对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏.状态栏.滚动条等等之后用于看网页的区域, 这是真正有效的区域.由于移动设备屏幕宽度不同于传统web,因此我们需要改变viewport; 实际上我们可以操作的属性有4 个:  代码如下: wi

基于JS组件实现拖动滑块验证功能(代码分享)_javascript技巧

拖动滑块验证功能在支付宝,微信各大平台都能见到这样的功能,那么基于js组件是如何实现此功能的呢?今天小编就给大家分享下js 拖动滑块 验证功能的实现代码,具体代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="Cache-Control" content="no-cache, no-store, m

8个超实用的jQuery功能代码分享_jquery

本文我们将为jQuery用户分享8个超实用的技巧攻略.jQuery是JavaScript最好的库之一,主要用于制作动画.事件处理,支持Ajax及HTML 脚本客户端.此外,jQuery还拥有各种插件,以帮助开发者在最短时间内快速创建网站/网页. 文中分享的这些实用代码,希望你会喜欢. 1)禁用右键单击功能 如果你想为用户节省网站信息,那么开发者可以使用这段代码--禁用右键单击功能. 复制代码 代码如下: $(document).ready(function() {  //catch the ri

Android中实现下载和解压zip文件功能代码分享_Android

本文提供了2段Android代码,实现了从Android客户端下载ZIP文件并且实现ZIP文件的解压功能,非常实用,有需要的Android开发者可以尝试一下. 下载: DownLoaderTask.java 复制代码 代码如下: package com.johnny.testzipanddownload; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; im

php商品对比功能代码分享_php技巧

下面是自己亲自动手编写的代码,和大家一起学习研究. 商品对比调用的JS文件(包含了商品对比框浮动JS): /*浮动窗口*/ (function(){ var n=10; var obj=document.getElementById("goods-compare"); if(!obj){ return false; } var x=0; window.onscroll=function(){ obj.style.top=(document.body.scrollTop||documen

Android中实现下载和解压zip文件功能代码分享

本文提供了2段Android代码,实现了从Android客户端下载ZIP文件并且实现ZIP文件的解压功能,非常实用,有需要的Android开发者可以尝试一下. 下载: DownLoaderTask.java 复制代码 代码如下: package com.johnny.testzipanddownload; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; im

服务器端实现文件下载功能代码

package com.cn; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import javax.ser

jQuery实现倒计时按钮功能代码分享_jquery

代码一: { wait:90, hsTime:function(that){ if (this.wait == 0) { $('#hsbtn').removeAttr("disabled").val('重发短信验证码'); this.wait = 90; } else { var _this = this; $(that).attr("disabled", true).val('在'+_this.wait+'秒后点此重发'); _this.wait--; setTi

手机开发必备技巧:javascript及CSS功能代码分享_javascript技巧

1. viewport: 也就是可视区域.对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏.状态栏.滚动条等等之后用于看网页的区域, 这是真正有效的区域.由于移动设备屏幕宽度不同于传统web,因此我们需要改变viewport; 实际上我们可以操作的属性有4 个: 复制代码 代码如下: width -             //  viewport 的宽度 (范围从200 到10,000,默认为980 像素) height -            //  viewpor