|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--oracle.clex.util.MultipartRequest
A utility class to handle multipart/form-data requests, the kind of requests that support file uploads. This class can receive arbitrarily large files (up to an artificial limit you can set), and fairly efficiently too. It cannot handle nested data (multipart content within multipart content) or internationalized content (such as non Latin-1 filenames).
It's used like this:
A client can upload files using an HTML form with the following structure. Note that not all browsers support file uploads.MultipartRequest multi = new MultipartRequest(req, "."); out.println("Params:"); Enumeration params = multi.getParameterNames(); while (params.hasMoreElements()) { String name = (String)params.nextElement(); String value = multi.getParameter(name); out.println(name + " = " + value); } out.println(); out.println("Files:"); Enumeration files = multi.getFileNames(); while (files.hasMoreElements()) { String name = (String)files.nextElement(); String filename = multi.getFilesystemName(name); String type = multi.getContentType(name); File f = multi.getFile(name); out.println("name: " + name); out.println("filename: " + filename); out.println("type: " + type); if (f != null) { out.println("f.toString(): " + f.toString()); out.println("f.getName(): " + f.getName()); out.println("f.exists(): " + f.exists()); out.println("f.length(): " + f.length()); out.println(); } }
<FORM ACTION="/servlet/Handler" METHOD=POST ENCTYPE="multipart/form-data"> What is your name? <INPUT TYPE=TEXT NAME=submitter> <BR> Which file to upload? <INPUT TYPE=FILE NAME=file> <BR> <INPUT TYPE=SUBMIT> </FORM>
The full file upload specification is contained in experimental RFC 1867, available at http://ds.internic.net/rfc/rfc1867.txt.
Field Summary | |
protected static int |
DEFAULT_MAX_POST_SIZE
|
Constructor Summary | |
MultipartRequest()
Empty constructor |
|
MultipartRequest(javax.servlet.ServletRequest request,
java.lang.String saveDirectory)
Constructs a new MultipartRequest to handle the specified request, saving any uploaded files to the given directory, and limiting the upload size to 1 Megabyte. |
|
MultipartRequest(javax.servlet.ServletRequest request,
java.lang.String saveDirectory,
int maxPostSize)
Constructs a new MultipartRequest to handle the specified request, saving any uploaded files to the given directory, and limiting the upload size to the specified length. |
Method Summary | |
protected void |
addFile(java.lang.Object fileKey,
java.lang.Object file)
Add a file to the file Hashtable. |
protected void |
addParam(java.lang.Object paramKey,
java.lang.Object paramValue)
Add to the parameters hashtable |
java.lang.String |
getContentType(java.lang.String name)
Returns the content type of the specified file (as supplied by the client browser), or null if the file was not included in the upload. |
java.io.File |
getFile(java.lang.String name)
Returns a File object for the specified file saved on the server's filesystem, or null if the file was not included in the upload. |
java.util.Enumeration |
getFileNames()
Returns the names of all the uploaded files as an Enumeration of Strings. |
protected java.util.Hashtable |
getFilesHashtable()
Returns the files Hashtable so that subclasses can access it if methods that populates this hashtable is overridden |
java.lang.String |
getFilesystemName(java.lang.String name)
Returns the filesystem name of the specified file, or null if the file was not included in the upload. |
protected int |
getMaxPostSize()
Returns the max post size setting |
java.lang.String |
getParameter(java.lang.String name)
Returns the value of the named parameter as a String, or null if the parameter was not given. |
java.util.Enumeration |
getParameterNames()
Returns the names of all the parameters as an Enumeration of Strings. |
protected java.util.Hashtable |
getParametersHashtable()
Returns the parameters Hashtable so that subclasses can access it if methods that populates this hashtable is overridden |
protected javax.servlet.ServletRequest |
getServletRequest()
Returns the servlet request that contains the multipart request |
protected java.lang.String |
getSessionId()
Returns a String representing the id of the session associated with the servletRequest attribute. |
protected java.io.File |
getUploadDirectory()
Returns the upload directory |
java.lang.String |
makeUnique(java.lang.String aString)
Returns a unique string version of the specified string by prepending the session id to it. |
protected void |
readAndSaveFile(oracle.clex.util.MultipartInputStreamHandler in,
java.lang.String boundary,
java.lang.String filename)
A utility method that reads a single part of the multipart request that represents a file, and saves the file to the given directory. |
protected boolean |
readNextPart(oracle.clex.util.MultipartInputStreamHandler in,
java.lang.String boundary)
A utility method that reads an individual part. |
protected java.lang.String |
readParameter(oracle.clex.util.MultipartInputStreamHandler in,
java.lang.String boundary)
A utility method that reads a single part of the multipart request that represents a parameter. |
protected void |
readRequest()
The workhorse method that actually parses the request. |
protected void |
removeFile(java.lang.Object fileKey)
Removes the file from the hashtable |
protected void |
removeParam(java.lang.Object paramKey)
Removes the parameter with the key from the parameters hashtable |
protected void |
setMaxPostSize(int maxPostSize)
Sets the max post size |
void |
setServletRequest(javax.servlet.ServletRequest request)
Sets the servlet request that contains the multipart request |
protected void |
setUploadDirectory(java.io.File uploadDirectory)
Sets the upload directory |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected static final int DEFAULT_MAX_POST_SIZE
Constructor Detail |
public MultipartRequest()
public MultipartRequest(javax.servlet.ServletRequest request, java.lang.String saveDirectory) throws java.io.IOException
request
- the servlet requestsaveDirectory
- the directory in which to save any uploaded filesjava.io.IOException
- if the uploaded content is larger than 1 Megabyte
or there's a problem reading or parsing the requestpublic MultipartRequest(javax.servlet.ServletRequest request, java.lang.String saveDirectory, int maxPostSize) throws java.io.IOException
request
- the servlet requestsaveDirectory
- the directory in which to save any uploaded filesmaxPostSize
- the maximum size of the POST contentjava.io.IOException
- if the uploaded content is larger than
maxPostSize or there's a problem reading or parsing the requestMethod Detail |
public java.util.Enumeration getParameterNames()
public java.util.Enumeration getFileNames()
public java.lang.String getParameter(java.lang.String name)
name
- the parameter namepublic java.lang.String getFilesystemName(java.lang.String name)
name
- the file namepublic java.lang.String getContentType(java.lang.String name)
name
- the file namepublic java.io.File getFile(java.lang.String name)
name
- the file namepublic void setServletRequest(javax.servlet.ServletRequest request)
request
- The servlet requestprotected javax.servlet.ServletRequest getServletRequest()
protected void setMaxPostSize(int maxPostSize)
maxPostSize
- The max post size allowedprotected int getMaxPostSize()
protected void setUploadDirectory(java.io.File uploadDirectory)
The
- upload directoryprotected java.io.File getUploadDirectory()
protected void addParam(java.lang.Object paramKey, java.lang.Object paramValue)
paramKey
- The key of the parameterparamValue
- The parameter value to be addedprotected void removeParam(java.lang.Object paramKey)
paramKey
- The key of the parameter to be removedprotected java.util.Hashtable getParametersHashtable()
protected void addFile(java.lang.Object fileKey, java.lang.Object file)
fileKey
- The key for the file to be addedfile
- The file to be added -- must b UploadedFile if not not
overriding the standard mutlipartrequest processingprotected void removeFile(java.lang.Object fileKey)
fileKey
- The key of the file to be removedprotected java.util.Hashtable getFilesHashtable()
protected void readRequest() throws java.io.IOException
java.io.IOException
- if the uploaded content is larger than
maxSize or there's a problem parsing the requestprotected boolean readNextPart(oracle.clex.util.MultipartInputStreamHandler in, java.lang.String boundary) throws java.io.IOException
in
- the stream from which to read the partboundary
- the boundary separating partsjava.io.IOException
- if there's a problem reading or parsing the
requestreadParameter(oracle.clex.util.MultipartInputStreamHandler, java.lang.String)
,
readAndSaveFile(oracle.clex.util.MultipartInputStreamHandler, java.lang.String, java.lang.String)
protected java.lang.String readParameter(oracle.clex.util.MultipartInputStreamHandler in, java.lang.String boundary) throws java.io.IOException
in
- the stream from which to read the parameter informationboundary
- the boundary signifying the end of this partjava.io.IOException
- if there's a problem reading or parsing the
requestprotected void readAndSaveFile(oracle.clex.util.MultipartInputStreamHandler in, java.lang.String boundary, java.lang.String filename) throws java.io.IOException
in
- the stream from which to read the fileboundary
- the boundary signifying the end of this partdir
- the directory in which to save the uploaded filefilename
- the name under which to save the uploaded filejava.io.IOException
- if there's a problem reading or parsing the
requestprotected java.lang.String getSessionId()
public java.lang.String makeUnique(java.lang.String aString)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |