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

cn.dreampie.upload.multipart.ParamPart Maven / Gradle / Ivy

package cn.dreampie.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 - 2025 Weber Informatics LLC | Privacy Policy