Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.UnsupportedEncodingException;
- import java.util.Iterator;
- import javax.servlet.http.Part;
- import org.apache.commons.fileupload.FileItem;
- import org.apache.commons.fileupload.FileItemHeaders;
- import org.apache.commons.fileupload.util.FileItemHeadersImpl;
- import org.apache.commons.io.IOUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class PartItem implements FileItem {
- // defaut uid
- private static final long serialVersionUID = 1L;
- // get the logger
- private static final Logger LOGGER = LoggerFactory
- .getLogger(PartItem.class);
- /**
- * The delegate part
- */
- private Part part;
- /**
- * Storing the content of the part since the inputstream may be only read
- * one.
- */
- private byte[] content;
- /**
- * Is this part a form or a file field?
- */
- private boolean formField = false;
- /**
- * Create a new partItem with the given part.
- *
- * @param part
- * The part to delegate.
- */
- public PartItem(Part part) {
- this.part = part;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItemHeadersSupport#getHeaders()
- */
- @Override
- public FileItemHeaders getHeaders() {
- Iterator<String> s = part.getHeaderNames().iterator();
- FileItemHeadersImpl f = new FileItemHeadersImpl();
- while (s.hasNext()) {
- String key = s.next();
- f.addHeader(key, part.getHeader(key));
- }
- return f;
- }
- /*
- * (non-Javadoc)
- *
- * @see
- * org.apache.commons.fileupload.FileItemHeadersSupport#setHeaders(org.apache
- * .commons.fileupload.FileItemHeaders)
- */
- @Override
- public void setHeaders(FileItemHeaders headers) {
- // may be ignored. The headers of a part cannot be changed
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#getInputStream()
- */
- @Override
- public InputStream getInputStream() throws IOException {
- return part.getInputStream();
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#getContentType()
- */
- @Override
- public String getContentType() {
- return part.getContentType();
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#getName()
- */
- @Override
- public String getName() {
- return part.getSubmittedFileName();
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#isInMemory()
- */
- @Override
- public boolean isInMemory() {
- return true; // these parts should not be written to disk
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#getSize()
- */
- @Override
- public long getSize() {
- return part.getSize();
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#get()
- */
- @Override
- public byte[] get() {
- if (content == null) {
- try {
- content = IOUtils.toByteArray(getInputStream());
- } catch (IOException e) {
- LOGGER.error("Failed to read content from the part", e);
- }
- }
- return content;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#getString(java.lang.String)
- */
- @Override
- public String getString(String encoding)
- throws UnsupportedEncodingException {
- return new String(get(), encoding);
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#getString()
- */
- @Override
- public String getString() {
- return new String(get());
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#write(java.io.File)
- */
- @Override
- public void write(File file) throws Exception {
- // file will stay in memory
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#delete()
- */
- @Override
- public void delete() {
- // file only exists in memory therefor delete() is not implemented
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#getFieldName()
- */
- @Override
- public String getFieldName() {
- return part.getName();
- }
- /*
- * (non-Javadoc)
- *
- * @see
- * org.apache.commons.fileupload.FileItem#setFieldName(java.lang.String)
- */
- @Override
- public void setFieldName(String name) {
- LOGGER.info("setFieldName()");
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#isFormField()
- */
- @Override
- public boolean isFormField() {
- return formField;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#setFormField(boolean)
- */
- @Override
- public void setFormField(boolean state) {
- this.formField = state;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.commons.fileupload.FileItem#getOutputStream()
- */
- @Override
- public OutputStream getOutputStream() throws IOException {
- // the part cannot be changed.
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment