java Struts2如何通过文件路径下载文件
时间: 2023-10-18 11:04:48 浏览: 106
在Struts2中,可以通过以下步骤实现文件下载:
1. 在Action中定义一个方法,用于处理文件下载请求。
2. 在方法中,使用文件输入流将文件读取到内存中。
3. 设置响应头信息,告诉浏览器下载文件。
4. 将文件内容写入响应输出流中,完成文件下载。
下面是示例代码:
```java
public class DownloadAction extends ActionSupport {
private String fileName; // 文件名
private String filePath; // 文件路径
public String execute() throws Exception {
File file = new File(filePath);
if (!file.exists()) {
return ERROR; // 文件不存在,返回错误页面
}
HttpServletResponse response = ServletActionContext.getResponse();
response.reset(); // 清空响应头
response.setContentType("application/octet-stream"); // 设置响应类型为二进制流
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(), "ISO8859-1")); // 设置响应头信息,告诉浏览器下载文件
FileInputStream fis = new FileInputStream(file);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
fis.close();
os.close();
return NONE; // 不需要跳转页面
}
// getter和setter方法省略
}
```
在JSP页面中,可以通过以下代码触发文件下载:
```html
<a href="${pageContext.request.contextPath}/download.action?fileName=${fileName}&filePath=${filePath}">下载文件</a>
```
其中,`fileName`和`filePath`是Action中的属性,用于传递文件名和文件路径。`${pageContext.request.contextPath}`是应用的上下文路径。
阅读全文