com.oreilly.servlet.multipart
Class FilePart

java.lang.Object
  extended by com.oreilly.servlet.multipart.Part
      extended by com.oreilly.servlet.multipart.FilePart

public class FilePart
extends Part

A FilePart is an upload part which represents a INPUT TYPE="file" form parameter. Note that because file upload data arrives via a single InputStream, each FilePart's contents must be read before moving onto the next part. Don't try to store a FilePart object for later processing because by then their content will have been passed by.

Version:
1.2, 2001/01/22, getFilePath() addition thanks to Stefan Eissing, 1.1, 2000/11/26, writeTo() bug fix thanks to Mike Shivas, 1.0, 2000/10/27, initial revision
Author:
Geoff Soutter

Method Summary
 java.lang.String getContentType()
          Returns the content type of the file data contained within.
 java.lang.String getFileName()
          Returns the name that the file was stored with on the remote system, or null if the user didn't enter a file to be uploaded.
 java.lang.String getFilePath()
          Returns the full path and name of the file on the remote system, or null if the user didn't enter a file to be uploaded.
 java.io.InputStream getInputStream()
          Returns an input stream which contains the contents of the file supplied.
 boolean isFile()
          Returns true to indicate this part is a file.
 void setRenamePolicy(FileRenamePolicy policy)
          Puts in place the specified policy for handling file name collisions.
 long writeTo(java.io.File fileOrDirectory)
          Write this file part to a file or directory.
 long writeTo(java.io.OutputStream out)
          Write this file part to the given output stream.
 
Methods inherited from class com.oreilly.servlet.multipart.Part
getName, isParam
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

setRenamePolicy

public void setRenamePolicy(FileRenamePolicy policy)
Puts in place the specified policy for handling file name collisions.


getFileName

public java.lang.String getFileName()
Returns the name that the file was stored with on the remote system, or null if the user didn't enter a file to be uploaded. Note: this is not the same as the name of the form parameter used to transmit the file; that is available from the getName method. Further note: if file rename logic is in effect, the file name can change during the writeTo() method when there's a collision with another file of the same name in the same directory. If this matters to you, be sure to pay attention to when you call the method.

Returns:
name of file uploaded or null.
See Also:
Part.getName()

getFilePath

public java.lang.String getFilePath()
Returns the full path and name of the file on the remote system, or null if the user didn't enter a file to be uploaded. If path information was not supplied by the remote system, this method will return the same as getFileName().

Returns:
path of file uploaded or null.
See Also:
Part.getName()

getContentType

public java.lang.String getContentType()
Returns the content type of the file data contained within.

Returns:
content type of the file data.

getInputStream

public java.io.InputStream getInputStream()
Returns an input stream which contains the contents of the file supplied. If the user didn't enter a file to upload there will be 0 bytes in the input stream. It's important to read the contents of the InputStream immediately and in full before proceeding to process the next part. The contents will otherwise be lost on moving to the next part.

Returns:
an input stream containing contents of file.

writeTo

public long writeTo(java.io.File fileOrDirectory)
             throws java.io.IOException
Write this file part to a file or directory. If the user supplied a file, we write it to that file, and if they supplied a directory, we write it to that directory with the filename that accompanied it. If this part doesn't contain a file this method does nothing.

Returns:
number of bytes written
Throws:
java.io.IOException - if an input or output exception has occurred.

writeTo

public long writeTo(java.io.OutputStream out)
             throws java.io.IOException
Write this file part to the given output stream. If this part doesn't contain a file this method does nothing.

Returns:
number of bytes written.
Throws:
java.io.IOException - if an input or output exception has occurred.

isFile

public boolean isFile()
Returns true to indicate this part is a file.

Overrides:
isFile in class Part
Returns:
true.