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;
}
}