Java Doc for MultipartStream.java in  » Net » apache-common-FileUpload » org » apache » commons » fileupload » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Net » apache common FileUpload » org.apache.commons.fileupload 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


java.lang.Object
   org.apache.commons.fileupload.MultipartStream

MultipartStream
public class MultipartStream (Code)

Low level API for processing file uploads.

This class can be used to process data streams conforming to MIME 'multipart' format as defined in RFC 1867. Arbitrarily large amounts of data in the stream can be processed under constant memory usage.

The format of the stream is defined in the following way:
multipart-body := preamble 1*encapsulation close-delimiter epilogue
encapsulation := delimiter body CRLF
delimiter := "--" boundary CRLF
close-delimiter := "--" boudary "--"
preamble := <ignore>
epilogue := <ignore>
body := header-part CRLF body-part
header-part := 1*header CRLF
header := header-name ":" header-value
header-name := <printable ascii characters except ":">
header-value := <any ascii characters except CR & LF>
body-data := <arbitrary data>

Note that body-data can contain another mulipart entity. There is limited support for single pass processing of such nested streams. The nested stream is required to have a boundary token of the same length as the parent stream (see MultipartStream.setBoundary(byte[]) ).

Here is an example of usage of this class.

 try {
 MultipartStream multipartStream = new MultipartStream(input,
 boundary);
 boolean nextPart = multipartStream.skipPreamble();
 OutputStream output;
 while(nextPart) {
 header = chunks.readHeader();
 // process headers
 // create some output stream
 multipartStream.readBodyPart(output);
 nextPart = multipartStream.readBoundary();
 }
 } catch(MultipartStream.MalformedStreamException e) {
 // the stream failed to follow required syntax
 } catch(IOException) {
 // a read or write error occurred
 }
 

author:
   Rafal Krzewski
author:
   Martin Cooper
author:
   Sean C. Sullivan
version:
   $Id: MultipartStream.java 502350 2007-02-01 20:42:48Z jochen $

Inner Class :static class ProgressNotifier
Inner Class :public static class MalformedStreamException extends IOException
Inner Class :public static class IllegalBoundaryException extends IOException
Inner Class :public class ItemInputStream extends InputStream implements Closeable

Field Summary
final protected static  byte[]BOUNDARY_PREFIX
     A byte sequence that precedes a boundary (CRLF--).
final public static  byteCR
     The Carriage Return ASCII character value.
final public static  byteDASH
     The dash (-) ASCII character value.
final protected static  intDEFAULT_BUFSIZE
     The default length of the buffer used for processing a request.
final protected static  byte[]FIELD_SEPARATOR
     A byte sequence that that follows a delimiter that will be followed by an encapsulation (CRLF).
final public static  intHEADER_PART_SIZE_MAX
     The maximum length of header-part that will be processed (10 kilobytes = 10240 bytes.).
final protected static  byte[]HEADER_SEPARATOR
     A byte sequence that marks the end of header-part (CRLFCRLF).
final public static  byteLF
     The Line Feed ASCII character value.
final protected static  byte[]STREAM_TERMINATOR
     A byte sequence that that follows a delimiter of the last encapsulation in the stream (--).

Constructor Summary
public  MultipartStream()
     Creates a new instance.
public  MultipartStream(InputStream input, byte[] boundary, int bufSize)
    

Constructs a MultipartStream with a custom size buffer and no progress notifier.

Note that the buffer must be at least big enough to contain the boundary string, plus 4 characters for CR/LF and double dash, plus at least one byte of data.

 MultipartStream(InputStream input, byte[] boundary, int bufSize, ProgressNotifier pNotifier)
    

Constructs a MultipartStream with a custom size buffer.

Note that the buffer must be at least big enough to contain the boundary string, plus 4 characters for CR/LF and double dash, plus at least one byte of data.

 MultipartStream(InputStream input, byte[] boundary, ProgressNotifier pNotifier)
    

Constructs a MultipartStream with a default size buffer.

public  MultipartStream(InputStream input, byte[] boundary)
    

Constructs a MultipartStream with a default size buffer.


Method Summary
public static  booleanarrayequals(byte[] a, byte[] b, int count)
     Compares count first bytes in the arrays a and b.
Parameters:
  a - The first array to compare.
Parameters:
  b - The second array to compare.
Parameters:
  count - How many bytes should be compared.
public  intdiscardBodyData()
    

Reads body-data from the current encapsulation and discards it.

protected  intfindByte(byte value, int pos)
     Searches for a byte of specified value in the buffer, starting at the specified position.
Parameters:
  value - The value to find.
Parameters:
  pos - The starting position for searching.
protected  intfindSeparator()
     Searches for the boundary in the buffer region delimited by head and tail.
public  StringgetHeaderEncoding()
     Retrieves the character encoding used when reading the headers of an individual part.
 ItemInputStreamnewInputStream()
     Creates a new ItemInputStream .
public  intreadBodyData(OutputStream output)
    

Reads body-data from the current encapsulation and writes its contents into the output Stream.

Arbitrary large amounts of data can be processed by this method using a constant size buffer.

public  booleanreadBoundary()
     Skips a boundary token, and checks whether more encapsulations are contained in the stream.
public  bytereadByte()
     Reads a byte from the buffer, and refills it as necessary.
public  StringreadHeaders()
    

Reads the header-part of the current encapsulation.

Headers are returned verbatim to the input stream, including the trailing CRLF marker.

public  voidsetBoundary(byte[] boundary)
    

Changes the boundary token used for partitioning the stream.

public  voidsetHeaderEncoding(String encoding)
     Specifies the character encoding to be used when reading the headers of individual parts.
public  booleanskipPreamble()
     Finds the beginning of the first encapsulation.

Field Detail
BOUNDARY_PREFIX
final protected static byte[] BOUNDARY_PREFIX(Code)
A byte sequence that precedes a boundary (CRLF--).



CR
final public static byte CR(Code)
The Carriage Return ASCII character value.



DASH
final public static byte DASH(Code)
The dash (-) ASCII character value.



DEFAULT_BUFSIZE
final protected static int DEFAULT_BUFSIZE(Code)
The default length of the buffer used for processing a request.



FIELD_SEPARATOR
final protected static byte[] FIELD_SEPARATOR(Code)
A byte sequence that that follows a delimiter that will be followed by an encapsulation (CRLF).



HEADER_PART_SIZE_MAX
final public static int HEADER_PART_SIZE_MAX(Code)
The maximum length of header-part that will be processed (10 kilobytes = 10240 bytes.).



HEADER_SEPARATOR
final protected static byte[] HEADER_SEPARATOR(Code)
A byte sequence that marks the end of header-part (CRLFCRLF).



LF
final public static byte LF(Code)
The Line Feed ASCII character value.



STREAM_TERMINATOR
final protected static byte[] STREAM_TERMINATOR(Code)
A byte sequence that that follows a delimiter of the last encapsulation in the stream (--).




Constructor Detail
MultipartStream
public MultipartStream()(Code)
Creates a new instance. MultipartStream.MultipartStream(InputStream,byte[],org.apache.commons.fileupload.MultipartStream.ProgressNotifier)MultipartStream.MultipartStream(InputStream,byte[],int,org.apache.commons.fileupload.MultipartStream.ProgressNotifier)



MultipartStream
public MultipartStream(InputStream input, byte[] boundary, int bufSize)(Code)

Constructs a MultipartStream with a custom size buffer and no progress notifier.

Note that the buffer must be at least big enough to contain the boundary string, plus 4 characters for CR/LF and double dash, plus at least one byte of data. Too small a buffer size setting will degrade performance.
Parameters:
  input - The InputStream to serve as a data source.
Parameters:
  boundary - The token used for dividing the stream intoencapsulations.
Parameters:
  bufSize - The size of the buffer to be used, in bytes.
See Also:   MultipartStream.MultipartStream(InputStream,byte[],ProgressNotifier)MultipartStream.MultipartStream(InputStream,byte[],int,org.apache.commons.fileupload.MultipartStream.ProgressNotifier)




MultipartStream
MultipartStream(InputStream input, byte[] boundary, int bufSize, ProgressNotifier pNotifier)(Code)

Constructs a MultipartStream with a custom size buffer.

Note that the buffer must be at least big enough to contain the boundary string, plus 4 characters for CR/LF and double dash, plus at least one byte of data. Too small a buffer size setting will degrade performance.
Parameters:
  input - The InputStream to serve as a data source.
Parameters:
  boundary - The token used for dividing the stream intoencapsulations.
Parameters:
  bufSize - The size of the buffer to be used, in bytes.
Parameters:
  pNotifier - The notifier, which is used for calling theprogress listener, if any.
See Also:   MultipartStream.MultipartStream(InputStream,byte[],ProgressNotifier)




MultipartStream
MultipartStream(InputStream input, byte[] boundary, ProgressNotifier pNotifier)(Code)

Constructs a MultipartStream with a default size buffer.
Parameters:
  input - The InputStream to serve as a data source.
Parameters:
  boundary - The token used for dividing the stream intoencapsulations.
Parameters:
  pNotifier - An object for calling the progress listener, if any.
See Also:   MultipartStream.MultipartStream(InputStream,byte[],int,ProgressNotifier)




MultipartStream
public MultipartStream(InputStream input, byte[] boundary)(Code)

Constructs a MultipartStream with a default size buffer.
Parameters:
  input - The InputStream to serve as a data source.
Parameters:
  boundary - The token used for dividing the stream intoencapsulations.MultipartStream.MultipartStream(InputStream,byte[],ProgressNotifier)
See Also:   MultipartStream.MultipartStream(InputStream,byte[],int,ProgressNotifier)





Method Detail
arrayequals
public static boolean arrayequals(byte[] a, byte[] b, int count)(Code)
Compares count first bytes in the arrays a and b.
Parameters:
  a - The first array to compare.
Parameters:
  b - The second array to compare.
Parameters:
  count - How many bytes should be compared. true if count first bytes in arraysa and b are equal.



discardBodyData
public int discardBodyData() throws MalformedStreamException, IOException(Code)

Reads body-data from the current encapsulation and discards it.

Use this method to skip encapsulations you don't need or don't understand. The amount of data discarded.
throws:
  MalformedStreamException - if the stream ends unexpectedly.
throws:
  IOException - if an i/o error occurs.




findByte
protected int findByte(byte value, int pos)(Code)
Searches for a byte of specified value in the buffer, starting at the specified position.
Parameters:
  value - The value to find.
Parameters:
  pos - The starting position for searching. The position of byte found, counting from beginning of thebuffer, or -1 if not found.



findSeparator
protected int findSeparator()(Code)
Searches for the boundary in the buffer region delimited by head and tail. The position of the boundary found, counting from thebeginning of the buffer, or -1 ifnot found.



getHeaderEncoding
public String getHeaderEncoding()(Code)
Retrieves the character encoding used when reading the headers of an individual part. When not specified, or null, the platform default encoding is used. The encoding used to read part headers.



newInputStream
ItemInputStream newInputStream()(Code)
Creates a new ItemInputStream . A new instance of ItemInputStream.



readBodyData
public int readBodyData(OutputStream output) throws MalformedStreamException, IOException(Code)

Reads body-data from the current encapsulation and writes its contents into the output Stream.

Arbitrary large amounts of data can be processed by this method using a constant size buffer. (see MultipartStream.MultipartStream(InputStream,byte[],int,ProgressNotifier) constructor ).
Parameters:
  output - The Stream to write data into. Maybe null, in which case this method is equivalentto MultipartStream.discardBodyData(). the amount of data written.
throws:
  MalformedStreamException - if the stream ends unexpectedly.
throws:
  IOException - if an i/o error occurs.




readBoundary
public boolean readBoundary() throws MalformedStreamException(Code)
Skips a boundary token, and checks whether more encapsulations are contained in the stream. true if there are more encapsulations inthis stream; false otherwise.
throws:
  MalformedStreamException - if the stream ends unexpecetedly orfails to follow required syntax.



readByte
public byte readByte() throws IOException(Code)
Reads a byte from the buffer, and refills it as necessary. The next byte from the input stream.
throws:
  IOException - if there is no more data available.



readHeaders
public String readHeaders() throws MalformedStreamException(Code)

Reads the header-part of the current encapsulation.

Headers are returned verbatim to the input stream, including the trailing CRLF marker. Parsing is left to the application.

TODO allow limiting maximum header size to protect against abuse. The header-part of the current encapsulation.
throws:
  MalformedStreamException - if the stream ends unexpecetedly.




setBoundary
public void setBoundary(byte[] boundary) throws IllegalBoundaryException(Code)

Changes the boundary token used for partitioning the stream.

This method allows single pass processing of nested multipart streams.

The boundary token of the nested stream is required to be of the same length as the boundary token in parent stream.

Restoring the parent stream boundary token after processing of a nested stream is left to the application.
Parameters:
  boundary - The boundary to be used for parsing of the nestedstream.
throws:
  IllegalBoundaryException - if the boundaryhas a different length than the onebeing currently parsed.




setHeaderEncoding
public void setHeaderEncoding(String encoding)(Code)
Specifies the character encoding to be used when reading the headers of individual parts. When not specified, or null, the platform default encoding is used.
Parameters:
  encoding - The encoding used to read part headers.



skipPreamble
public boolean skipPreamble() throws IOException(Code)
Finds the beginning of the first encapsulation. true if an encapsulation was found inthe stream.
throws:
  IOException - if an i/o error occurs.



Methods inherited from java.lang.Object
native protected Object clone() throws CloneNotSupportedException(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
protected void finalize() throws Throwable(Code)(Java Doc)
final native public Class getClass()(Code)(Java Doc)
native public int hashCode()(Code)(Java Doc)
final native public void notify()(Code)(Java Doc)
final native public void notifyAll()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final native public void wait(long timeout) throws InterruptedException(Code)(Java Doc)
final public void wait(long timeout, int nanos) throws InterruptedException(Code)(Java Doc)
final public void wait() throws InterruptedException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.