All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cybermkd.upload.multipart.ParamPart Maven / Gradle / Ivy

package com.cybermkd.upload.multipart;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

/**
 * A ParamPart is an upload part which represents a normal
 * INPUT (for example a non TYPE="file") form
 * parameter.
 *
 * @author Geoff Soutter
 * @author Jason Hunter
 * @version 1.0, 2000/10/27, initial revision
 */
public class ParamPart extends Part {

    /**
     * contents of the parameter
     */
    private byte[] value;

    private String encoding;

    /**
     * Constructs a parameter part; this is called by the parser.
     *
     * @param name     the name of the parameter.
     * @param in       the servlet input stream to read the parameter value from.
     * @param boundary the MIME boundary that delimits the end of parameter value.
     * @param encoding the byte-to-char encoding to use by default
     *                 value.
     */
    ParamPart(String name, InputStream in,
              String boundary, String encoding) throws IOException {
        super(name);
        this.encoding = encoding;

        // Copy the part's contents into a byte array
        PartInputStream pis = new PartInputStream(in, boundary);
        ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
        byte[] buf = new byte[128];
        int read;
        while ((read = pis.read(buf)) != -1) {
            baos.write(buf, 0, read);
        }
        pis.close();
        baos.close();

        // save it for later
        value = baos.toByteArray();
    }

    /**
     * Returns the value of the parameter as an array of bytes or a zero length
     * array if the user entered no value for this parameter.
     *
     * @return value of parameter as raw bytes
     */
    public byte[] getValue() {
        return value;
    }

    /**
     * Returns the value of the parameter in as a string (using the
     * parser-specified encoding to convert from bytes) or the empty string
     * if the user entered no value for this parameter.
     *
     * @return value of parameter as a string.
     */
    public String getStringValue()
            throws UnsupportedEncodingException {
        return getStringValue(encoding);
    }

    /**
     * Returns the value of the parameter in the supplied encoding
     * or empty string if the user entered no value for this parameter.
     *
     * @return value of parameter as a string.
     */
    public String getStringValue(String encoding)
            throws UnsupportedEncodingException {
        return new String(value, encoding);
    }

    /**
     * Returns true to indicate this part is a parameter.
     *
     * @return true.
     */
    public boolean isParam() {
        return true;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy