Johannes;

Thanks for your response.

I have attached:
DownloadAction.java
struts.xml
tiles-def.xml
web.xml

If you need anything else, please let me know.

John

On Thu, 2012-02-23 at 23:13 -0800, Johannes Geppert wrote:
> Hi John,
> 
> can you share the Code of your Action and the configuration for this Action?
> 
> Johannes
> 
> -----
> web: http://www.jgeppert.com
> twitter: http://twitter.com/jogep
> --
> View this message in context: 
> http://struts.1045723.n5.nabble.com/Download-a-byteArray-jpg-image-to-browser-tp5509528p5511883.html
> Sent from the Struts - User mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
> 

package com.edwardjones.photo.web.actions;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.edwardjones.framework.annotations.Lookup;
import com.edwardjones.framework.logging.EJLogger;
import com.edwardjones.framework.logging.EJLoggerFactory;
import com.edwardjones.framework.logging.TransactionInfo;
import com.edwardjones.framework.logging.TransactionInfoManager;
import com.edwardjones.photo.services.image.Image;
import com.edwardjones.photo.services.image.ImageApplicationException;
import com.edwardjones.photo.services.image.ImageStatsAware;

import com.opensymphony.xwork2.ActionSupport;

/**
 * <p>
 * Title: $RCSfile$
 * </p>
 * <p>
 * Description: This action class ...
 * </p>
 * <p>
 * Copyright: Copyright (c) 2012
 * </p>
 * <p>
 * Company: Edward Jones
 * </p>
 * 
 * @author Name (j31316)
 * @version $Revision$
 */

@Results
(
    {
     @Result(name = "success", location = "downloadPage", type = "tiles"),
     @Result(name = "error", location = "error", type = "tiles"),
     @Result(name = "download", type = "stream",
             params = {
                       "contentType", "application/octet-stream",
                       "inputName", "fileInputStream",
                       "bufferSize", "1024"
                      }
            )
    }
)

public class DownloadAction extends ActionSupport {

    // TODO Complete documentation in class Javadoc.
    // TODO Replace "Name" with the author's name in the class Javadoc.
    // TODO Update the title in tiles-def.xml.
    // TODO Add content to the JSP.

    // This class extends ActionSupport to enable validation and localization.

    /**
     * ID used for versioning.
     */
    @SuppressWarnings("unused")
    private static final String VERSION_ID = "$Id$";

    /**
     * Version number used during deserialization. This is required because the
     * superclass, <tt>com.opensymphony.xwork2.ActionSupport</tt>, implements
     * <tt>java.io.Serializable</tt>.
     */
    private static final long serialVersionUID = 1L;

    /**
     * Standard logger.
     */
    private static final EJLogger LOGGER = EJLoggerFactory
            .getLogger(DownloadAction.class);

    // TODO The @FrameworkInjected and @Lookup annotations are often used for dependency injection.
    @Lookup("ImageSvc")
    ImageStatsAware imageSvc;
    
    TransactionInfoManager tiMgr;
    TransactionInfo transactionInfo;
    
    /* Default arguments */
    private final String defaultColorFlag = "N";
    private final String defaultContentCode = "A";
    private final String defaultFormatCode = "JPG";
    private final String defaultResolutionCode = "A";
    private final String defaultSizeCode = "A";
    private final String defaultSourceCode = "A";
    
    // TODO Add instance variables and their corresponding getter and setter
    // methods (use Source -> Generate Getters and Setters... in Eclipse) for
    // all request parameters / attributes (attributes only require getter
    // methods).


    /**
     * Creates a <tt>DownloadAction</tt> object.
     */
    public DownloadAction() {
        super();
    }


    /**
     * TODO Add description
     * 
     * @return The result, which will determine what action or JSP will be
     *         called after execution of the method.
     */
     // TODO Add @Validations, as needed.
    public String execute() {

        // NOTE: The execute() method is the default one called by Struts 2 if
        // the action name matches the class name, where camel-case names are
        // converted to dashes. See
        // http://struts.apache.org/2.1.6/docs/convention-plugin.html for more
        // information.

        // Initialize the forward name with the "success" value.
        String forward = "success";

        try {
            // TODO Finish implementing this method (e.g., add a service call).
            Image imagePhoto = fetchImageByEmployeeId(identifier);
            ByteArrayInputStream fileInputStream = new ByteArrayInputStream(imagePhoto.getPhotoImage());
            forward = "download";
        }
        catch (Exception e) {
            LOGGER.error("Caught an error while executing the action.", e);
        }

        return forward;
    }
    
    private Image fetchImageByEmployeeId(String employeeId)
    throws
        ImageApplicationException
        , IOException
    {
        Image imagePhoto = imageSvc.getImageByEmployeeId(employeeId, defaultSourceCode, defaultFormatCode, defaultResolutionCode, defaultColorFlag, defaultContentCode, defaultSizeCode, transactionInfo);
        return imagePhoto;
    }
    
    /**
     * colorFlag
     */
    private String colorFlag;
    
    /**
     * contentCode
     */
    private String contentCode;
    
    /**
     * formatCode
     */
    private String formatCode;
    
    /**
     * identifier - An assortment of possible values
     */
    private String identifier;

    /**
     * inputStream - Used to return the photo image
     */
    private ByteArrayInputStream fileInputStream;
    
    /**
     * resolutionCode
     */
    private String resolutionCode;
    
    /**
     * sizeCode
     */
    private String sizeCode;
    
    /**
     * sourceCode
     */
    private String sourceCode;

    /**
     * @return the colorFlag
     */
    public String getColorFlag() {
        return colorFlag;
    }

    /**
     * @param colorFlag the colorFlag to set
     */
    public void setColorFlag(String colorFlag) {
        this.colorFlag = colorFlag;
    }

    /**
     * @return the contentCode
     */
    public String getContentCode() {
        return contentCode;
    }
    
    /**
     * @param contentCode the contentCode to set
     */
    public void setContentCode(String contentCode) {
        this.contentCode = contentCode;
    }

    /**
     * @return the identifier
     */
    public String getIdentifier() {
        return identifier;
    }
    
    /**
     * @param identifier the identifier to set
     */
    public void setIdentifier(String identifier) {
        this.identifier = identifier;
    }

    /**
     * @return the fileInputStream
     */
    public InputStream getFileInputStream() {
        return fileInputStream;
    }
    
    /**
     * @param inputStream the inputStream to set
     */
    public void setFileInputStream(ByteArrayInputStream fileInputStream)
    {
        this.fileInputStream = fileInputStream;
    }
    
    /**
     * @return the imageSvc
     */
    public ImageStatsAware getImageSvc() {
        return imageSvc;
    }

    /**
     * @param imageSvc the imageSvc to set
     */
    public void setImageSvc(ImageStatsAware imageSvc) {
        this.imageSvc = imageSvc;
    }
    
    /**
     * @return the formatCode
     */
    public String getFormatCode() {
        return formatCode;
    }
    
    /**
     * @param formatCode the formatCode to set
     */
    public void setFormatCode(String formatCode) {
        this.formatCode = formatCode;
    }
    
    /**
     * @return the resolutionCode
     */
    public String getResolutionCode() {
        return resolutionCode;
    }

    /**
     * @param resolutionCode the resolutionCode to set
     */
    public void setResolutionCode(String resolutionCode) {
        this.resolutionCode = resolutionCode;
    }
    
    /**
     * @return the sizeCode
     */
    public String getSizeCode() {
        return sizeCode;
    }
    
    /**
     * @param sizeCode the sizeCode to set
     */
    public void setSizeCode(String sizeCode) {
        this.sizeCode = sizeCode;
    }
    
    /**
     * @return the sourceCode
     */
    public String getSourceCode() {
        return sourceCode;
    }
    
    /**
     * @param sourceCode the sourceCode to set
     */
    public void setSourceCode(String sourceCode) {
        this.sourceCode = sourceCode;
    }
    
}

Attachment: struts.xml
Description: XML document

Attachment: tiles-def.xml
Description: XML document

Attachment: web.xml
Description: XML document

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to