001: /*
002: * $Id: FormFile.java 471754 2006-11-06 14:55:09Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts.upload;
022:
023: import java.io.FileNotFoundException;
024: import java.io.IOException;
025: import java.io.InputStream;
026:
027: /**
028: * <p> This interface represents a file that has been uploaded by a client. It
029: * is the only interface or class in upload package which is typically
030: * referenced directly by a Struts application. </p>
031: */
032: public interface FormFile {
033: /**
034: * <p> Returns the content type for this file. </p>
035: *
036: * @return A String representing content type.
037: */
038: public String getContentType();
039:
040: /**
041: * <p> Sets the content type for this file. </p>
042: *
043: * @param contentType The content type for the file.
044: */
045: public void setContentType(String contentType);
046:
047: /**
048: * <p> Returns the size of this file. </p>
049: *
050: * @return The size of the file, in bytes.
051: */
052: public int getFileSize();
053:
054: /**
055: * <p> Sets the file size. </p>
056: *
057: * @param fileSize The size of the file, in bytes,
058: */
059: public void setFileSize(int fileSize);
060:
061: /**
062: * <p> Returns the file name of this file. This is the base name of the
063: * file, as supplied by the user when the file was uploaded. </p>
064: *
065: * @return The base file name.
066: */
067: public String getFileName();
068:
069: /**
070: * <p> Sets the file name of this file. </p>
071: *
072: * @param fileName The base file name.
073: */
074: public void setFileName(String fileName);
075:
076: /**
077: * <p> Returns the data for the entire file as byte array. Care is needed
078: * when using this method, since a large upload could easily exhaust
079: * available memory. The preferred method for accessing the file data is
080: * {@link #getInputStream() getInputStream}. </p>
081: *
082: * @return The file data as a byte array.
083: * @throws FileNotFoundException if the uploaded file is not found.
084: * @throws IOException if an error occurred while reading the
085: * file.
086: */
087: public byte[] getFileData() throws FileNotFoundException,
088: IOException;
089:
090: /**
091: * <p> Returns an input stream for this file. The caller must close the
092: * stream when it is no longer needed. </p>
093: *
094: * @throws FileNotFoundException if the uploaded file is not found.
095: * @throws IOException if an error occurred while reading the
096: * file.
097: */
098: public InputStream getInputStream() throws FileNotFoundException,
099: IOException;
100:
101: /**
102: * <p> Destroys all content for the uploaded file, including any
103: * underlying data files. </p>
104: */
105: public void destroy();
106: }
|