You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/12/16 18:47:13 UTC
svn commit: r604663 -
/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/upload/FileUploadBase.java
Author: jcompagner
Date: Sun Dec 16 09:47:09 2007
New Revision: 604663
URL: http://svn.apache.org/viewvc?rev=604663&view=rev
Log:
WICKET-1230
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/upload/FileUploadBase.java
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/upload/FileUploadBase.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/upload/FileUploadBase.java?rev=604663&r1=604662&r2=604663&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/upload/FileUploadBase.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/upload/FileUploadBase.java Sun Dec 16 09:47:09 2007
@@ -30,16 +30,16 @@
* <p>
* High level API for processing file uploads.
* </p>
- *
+ *
* <p>
* This class handles multiple files per single HTML widget, sent using <code>multipart/mixed</code>
* encoding type, as specified by <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>.
- *
+ *
* <p>
* How the data for individual parts is stored is determined by the factory used to create them; a
* given part may be in memory, on disk, or somewhere else.
* </p>
- *
+ *
* @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
* @author <a href="mailto:dlr@collab.net">Daniel Rall</a>
* @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
@@ -57,16 +57,16 @@
* <p>
* Utility method that determines whether the request contains multipart content.
* </p>
- *
+ *
* <p>
* <strong>NOTE:</strong>This method will be moved to the <code>ServletFileUpload</code>
* class after the FileUpload 1.1 release. Unfortunately, since this method is static, it is not
* possible to provide its replacement until this method is removed.
* </p>
- *
+ *
* @param ctx
* The request context to be evaluated. Must be non-null.
- *
+ *
* @return <code>true</code> if the request is multipart; <code>false</code> otherwise.
*/
public static final boolean isMultipartContent(RequestContext ctx)
@@ -154,7 +154,7 @@
/**
* Returns the factory class used when creating file items.
- *
+ *
* @return The factory class for new file items.
*/
public abstract FileItemFactory getFileItemFactory();
@@ -162,7 +162,7 @@
/**
* Sets the factory class to use when creating file items.
- *
+ *
* @param factory
* The factory class for new file items.
*/
@@ -171,11 +171,11 @@
/**
* Returns the maximum allowed upload size.
- *
+ *
* @return The maximum allowed size, in bytes.
- *
+ *
* @see #setSizeMax(long)
- *
+ *
*/
public long getSizeMax()
{
@@ -185,12 +185,12 @@
/**
* Sets the maximum allowed upload size. If negative, there is no maximum.
- *
+ *
* @param sizeMax
* The maximum allowed size, in bytes, or -1 for no maximum.
- *
+ *
* @see #getSizeMax()
- *
+ *
*/
public void setSizeMax(long sizeMax)
{
@@ -201,7 +201,7 @@
/**
* Retrieves the character encoding used when reading the headers of an individual part. When
* not specified, or <code>null</code>, the platform default encoding is used.
- *
+ *
* @return The encoding used to read part headers.
*/
public String getHeaderEncoding()
@@ -213,7 +213,7 @@
/**
* Specifies the character encoding to be used when reading the headers of individual parts.
* When not specified, or <code>null</code>, the platform default encoding is used.
- *
+ *
* @param encoding
* The encoding used to read part headers.
*/
@@ -228,13 +228,13 @@
/**
* Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a> compliant
* <code>multipart/form-data</code> stream.
- *
+ *
* @param ctx
* The context for the request to be parsed.
- *
+ *
* @return A list of <code>FileItem</code> instances parsed from the request, in the order
* that they were transmitted.
- *
+ *
* @exception FileUploadException
* if there are problems reading/parsing the request or storing files.
*/
@@ -306,6 +306,7 @@
if (getFileName(headers) != null)
{
FileItem item = createItem(headers, false);
+ items.add(item);
OutputStream os = item.getOutputStream();
try
{
@@ -315,7 +316,6 @@
{
os.close();
}
- items.add(item);
}
else
{
@@ -330,6 +330,7 @@
else
{
FileItem item = createItem(headers, getFileName(headers) == null);
+ items.add(item);
OutputStream os = item.getOutputStream();
try
{
@@ -339,7 +340,6 @@
{
os.close();
}
- items.add(item);
}
}
else
@@ -352,7 +352,11 @@
}
catch (IOException e)
{
- throw new FileUploadException("Processing of " + MULTIPART_FORM_DATA +
+ for(int i=0;i<items.size();i++) {
+ FileItem item = (FileItem)items.get(i);
+ item.delete();
+ }
+ throw new FileUploadException("Processing of " + MULTIPART_FORM_DATA +
" request failed. " + e.getMessage(), e);
}
@@ -365,10 +369,10 @@
/**
* Retrieves the boundary from the <code>Content-type</code> header.
- *
+ *
* @param contentType
* The value of the content type header from which to extract the boundary value.
- *
+ *
* @return The boundary, as a byte array.
*/
protected byte[] getBoundary(String contentType)
@@ -398,10 +402,10 @@
/**
* Retrieves the file name from the <code>Content-disposition</code> header.
- *
+ *
* @param headers
* A <code>Map</code> containing the HTTP request headers.
- *
+ *
* @return The file name for the current <code>encapsulation</code>.
*/
protected String getFileName(Map /* String, String */headers)
@@ -444,10 +448,10 @@
/**
* Retrieves the field name from the <code>Content-disposition</code> header.
- *
+ *
* @param headers
* A <code>Map</code> containing the HTTP request headers.
- *
+ *
* @return The field name for the current <code>encapsulation</code>.
*/
protected String getFieldName(Map /* String, String */headers)
@@ -473,12 +477,12 @@
/**
* Creates a new {@link FileItem} instance.
- *
+ *
* @param headers
* A <code>Map</code> containing the HTTP request headers.
* @param isFormField
* Whether or not this item is a form field, as opposed to a file.
- *
+ *
* @return A newly created <code>FileItem</code> instance.
*/
protected FileItem createItem(Map /* String, String */headers, boolean isFormField)
@@ -491,14 +495,14 @@
/**
* <p>
* Parses the <code>header-part</code> and returns as key/value pairs.
- *
+ *
* <p>
* If there are multiple headers of the same names, the name will map to a comma-separated list
* containing the values.
- *
+ *
* @param headerPart
* The <code>header-part</code> of the current <code>encapsulation</code>.
- *
+ *
* @return A <code>Map</code> containing the parsed HTTP request headers.
*/
protected Map /* String, String */parseHeaders(String headerPart)
@@ -559,12 +563,12 @@
/**
* Returns the header with the specified name from the supplied map. The header lookup is
* case-insensitive.
- *
+ *
* @param headers
* A <code>Map</code> containing the HTTP request headers.
* @param name
* The name of the header to return.
- *
+ *
* @return The value of specified header, or a comma-separated list if there were multiple
* headers of that name.
*/
@@ -593,7 +597,7 @@
/**
* Constructs an <code>InvalidContentTypeException</code> with the specified detail
* message.
- *
+ *
* @param message
* The detail message.
*/
@@ -622,7 +626,7 @@
/**
* Constructs an <code>UnknownSizeException</code> with the specified detail message.
- *
+ *
* @param message
* The detail message.
*/
@@ -651,7 +655,7 @@
/**
* Constructs an <code>SizeExceededException</code> with the specified detail message.
- *
+ *
* @param message
* The detail message.
*/