struts2 下载

简介: struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/




struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">


<struts>


    <constant name="struts.multipart.maxSize" value="10701096"/>
    <constant name="struts.devMode" value="true" />
  <package name="lhy" namespace="/lhy" extends="struts-default">
  
        


<action name="download" class="action.FileDownLoad" method="downLoad">
<!-- 
        (1)  <param name="contentDisposition">attachment;fileName="${fileName}"</param>
                      contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,
                                                         就直接在网页上打开,不能直接打开的才会打开下载框自己选择
                 (2)<param name="contentDisposition">attachment;filename="${fileName}"</param>
                     attachment :下载时会打开下载框
                      fileName="${fileName}" :在这定义的名字是一个动态的,在value stack中
                  (3) <param name="inputName">lhydownload</param>,这个downloadFile名字要和
                       FileDownload.java类中的getLhydownload()方法名去掉get 一致
         (4)bufferSize 下载缓冲区的大小


-->


<result type="stream" name="download">
<param name="contentType">application/octet-stream</param>
<!-- 要有相对应的getDownloadFile()方法返回值是 InputStream -->
<param name="inputName">lhydownload</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>
</package>
</struts>




FileDownLoad.java

package action;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;


import org.apache.struts2.ServletActionContext;


import com.opensymphony.xwork2.ActionSupport;


public class FileDownLoad extends ActionSupport{



private String fileName;

public String downLoad()
{
//此方法不尽兴任何操作,只有返回值
return "download";
}


public InputStream getLhydownload()
{
//声明输入流 
InputStream is = null;
String filePath=ServletActionContext.getServletContext().getRealPath("/upload");

System.out.println(filePath);
System.out.println(fileName);
try {
is = new FileInputStream(filePath+"/"+fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println(is);
return is;
}
public String getFileName() {
return fileName;
}


public void setFileName(String fileName) {
this.fileName = fileName;
}
}


jsp

<a href="/struts_uploadFile_download/lhy/download.action?fileName=20150923184827.jpg">下载</a>

目录
相关文章
|
9月前
|
JSON API 开发者
搜款网VVIC商品详情数据接口(搜款网API系列)
搜款网(VVIC)作为专业服装批发平台,提供商品详情数据接口,帮助开发者快速获取商品描述、价格、尺码、颜色、库存等信息。使用该接口需申请开发者权限并遵守平台规定。请求方式为HTTP GET,响应格式为JSON。Python示例代码展示了如何通过API获取商品详情。使用前务必确保合法授权,并注意错误处理和性能优化。
|
缓存 Java UED
仅执行一次的定时任务如何设置?
【10月更文挑战第12天】仅执行一次的定时任务如何设置?
730 1
|
5天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
387 93
|
6天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
5天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
391 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
5天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
272 158