java.lang.Object
gsoft.xervlet.MultipartRequest
- public class MultipartRequest
- extends java.lang.Object
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:
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();
}
}
A client can upload files using an HTML form with the following structure.
Note that not all browsers support file uploads.
<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.
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DEFAULT_MAX_POST_SIZE
private static final int DEFAULT_MAX_POST_SIZE
- See Also:
- Constant Field Values
req
private javax.servlet.ServletRequest req
dir
private java.io.File dir
maxSize
private int maxSize
parameters
private java.util.Hashtable parameters
files
private java.util.Hashtable files
MultipartRequest
public MultipartRequest(javax.servlet.ServletRequest request,
java.lang.String saveDirectory)
throws java.io.IOException
MultipartRequest
public MultipartRequest(javax.servlet.ServletRequest request,
java.lang.String saveDirectory,
int maxPostSize)
throws java.io.IOException
getParameterNames
public java.util.Enumeration getParameterNames()
getFileNames
public java.util.Enumeration getFileNames()
getParameter
public java.lang.String getParameter(java.lang.String name)
getFilesystemName
public java.lang.String getFilesystemName(java.lang.String name)
getContentType
public java.lang.String getContentType(java.lang.String name)
getFile
public java.io.File getFile(java.lang.String name)
readRequest
protected void readRequest()
throws java.io.IOException
readNextPart
protected boolean readNextPart(MultipartInputStreamHandler in,
java.lang.String boundary)
throws java.io.IOException
readParameter
protected java.lang.String readParameter(MultipartInputStreamHandler in,
java.lang.String boundary)
throws java.io.IOException
readAndSaveFile
protected void readAndSaveFile(MultipartInputStreamHandler in,
java.lang.String boundary,
java.lang.String filename)
throws java.io.IOException
extractBoundary
private java.lang.String extractBoundary(java.lang.String line)
extractDispositionInfo
private java.lang.String[] extractDispositionInfo(java.lang.String line)
throws java.io.IOException
extractContentType
private java.lang.String extractContentType(java.lang.String line)
throws java.io.IOException