Home > Guides > Core Developers Guide > Result Types > Stream Result |
A custom Result type for sending raw data (via an InputStream) directly to the HttpServletResponse. Very useful for allowing users to download content.
If you are running your app server under HTTPS and having issues with PDF's or other file streams you should take a look at HTTPS and IE Issues
text/plain
).inline
, values are typically
attachment;filename="document.pdf".inputStream
).1024
).true
)
These parameters can also be set by exposing a similarly named getter method on your Action. For example, you can
provide getContentType()
to override that parameter for the current action.
To configure Actions and Results with Annotations you need to activate the Struts2 Convention Plugin in your Struts2 application.
package com.mycompany.webapp.actions; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; @Result( name = "success", type = "stream", params = { "contentType", "${type}", "inputName", "stream", "bufferSize", "1024", "contentDisposition", "attachment;filename=\"${filename}\"" } ) public class FileDisplay extends ActionSupport { private String type = "image/jpeg"; private String filename; private InputStream stream; public String execute() throws Exception { filename = "myimage.jpg"; File img = new File("/path/to/image/image.jpg"); stream = new FileInputStream(img); return Action.SUCCESS; } private String getType() { return this.type; } private String getFilename() { return this.filename; } private String getStream() { return this.stream; } }