Struts 2ファイルダウンロード機能(テスト済み)
2785 ワード
くだらないことは言わないで、直接ソースコードに登って、すべて注釈の中で尽くします:
struts.xmlプロファイル:
package study.action;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import javax.servlet.ServletContext;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
/**
* Struts2
*
* @author Echo
*
*/
public class DownloadAction extends ActionSupport implements
ServletContextAware {
/** */
private static final long serialVersionUID = 1L;
/** , */
private ServletContext context;
/** , */
private String filename = "wusuowei";
/** MIME */
private String mimeType;
/** */
private InputStream inStream;
@Override
public String execute() throws Exception {
mimeType = context.getMimeType(filename);
return SUCCESS;
}
public InputStream getInStream() {
//
inStream = context.getResourceAsStream("/doc/" + filename);
if (inStream == null) { //
inStream = new ByteArrayInputStream("Sorry,File not found !"
.getBytes());
}
return inStream;
}
public String getMimeType() {
return mimeType;
}
public void setFilename(String filename) {
try {
//
this.filename = new String(filename.getBytes("ISO8859-1"), "GBK");
} catch (UnsupportedEncodingException e) {
}
}
public String getFilename() {
try {
//
return new String(filename.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
return this.filename;
}
}
public void setServletContext(ServletContext context) {
this.context = context;
}
}
struts.xmlプロファイル:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="zyc" extends="struts-default" namespace="/">
<action name="download" class="study.action.DownloadAction">
<!-- Action success -->
<result type="stream" name="success">
<!-- , Action mineType -->
<param name="contentType">${mimeType}</param>
<!-- , Actiono InputStream -->
<param name="inputName">inStream</param>
<!-- , Action -->
<param name="contentDisposition">attachment;filename="${filename}"</param>
<!-- -->
<param name="bufferSize">1024</param>
</result>
</action>
</package>
</struts>
残りの内容は、このActionをJSPページにネストしてクリックすると、対応するコンテンツをダウンロードすることができます.