图片文件下载 io
1. 新建一个web工程 ,创建download.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>download.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1>文件下载</h1>
<a href="download?picname=tu1">下载图片1</a>
<a href="download?picname=tu2">下载图片2</a>
</body>
</html>
2.导入struts2-core-2.3.31.jar包 ,创建一个JavaBean,名为DownloadAction.java,可以继承ActionSupport,代码如下:
package com.wow.web;
import java.io.File;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownloadAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String picname;//图片名称
private InputStream inputStream;//下载的文件流
public String execute(){
String allpath="\\WEB-INF\\upload"+File.separator+picname+".jpg";
System.out.println( allpath);
return SUCCESS;
}
public InputStream getInputStream() {
//下载路径
String allpath="\\WEB-INF\\upload"+File.separator+picname+".jpg";
//获取图片
inputStream=ServletActionContext.getServletContext().getResourceAsStream(allpath);
return inputStream;
}
public String getPicname() {
return picname;
}
public void setPicname(String picname) {
this.picname = picname;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
}
3.把图片存放到以下路径,项目工程里:/Struts2_10/WebRoot/WEB-INF/upload/tu1.jpg
4.配置struts.xml
<struts>
<package>
<action name="down">
<result>/WEB-INF/download.jsp</result>
</action>
<action name="download" class="com.wow.web.DownloadAction">
<!-- 提供内容给用户下载 -->
<result name="success" type="stream">
<!-- 下载的文件类型 -->
<param name="contentType">image/jpeg</param>
<!-- 下载的文件流 -->
<!-- 要对应DownloadAction.java中 inputStream属性 -->
<param name="inputName">inputStream</param>
<!-- attachment:下载时提示以后保存到某个位置
inline:直接下载
filename:保存的文件名称
${picname}:OGNL 表达式
-->
<param name="contentDisposition">attachment;filename=${picname}.jpg</param>
<!-- 缓冲区大小 2097152 = 2M-->
<param name="bufferSize">2097152</param>
</result>
</action>
</package>
</struts>
5. 运行 访问 127.0.0.1:8080/Struts2/down
点击 下载图片1 或2 会弹出一个框 , 选择要下载的位置