1. /*
  2. * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/multipart/PartSource.java,v 1.6 2004/04/18 23:51:37 jsdever Exp $
  3. * $Revision: 1.6 $
  4. * $Date: 2004/04/18 23:51:37 $
  5. *
  6. * ====================================================================
  7. *
  8. * Copyright 1999-2004 The Apache Software Foundation
  9. *
  10. * Licensed under the Apache License, Version 2.0 (the "License");
  11. * you may not use this file except in compliance with the License.
  12. * You may obtain a copy of the License at
  13. *
  14. * http://www.apache.org/licenses/LICENSE-2.0
  15. *
  16. * Unless required by applicable law or agreed to in writing, software
  17. * distributed under the License is distributed on an "AS IS" BASIS,
  18. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  19. * See the License for the specific language governing permissions and
  20. * limitations under the License.
  21. * ====================================================================
  22. *
  23. * This software consists of voluntary contributions made by many
  24. * individuals on behalf of the Apache Software Foundation. For more
  25. * information on the Apache Software Foundation, please see
  26. * <http://www.apache.org/>.
  27. *
  28. */
  29. package org.apache.commons.httpclient.methods.multipart;
  30. import java.io.IOException;
  31. import java.io.InputStream;
  32. /**
  33. * An interface for providing access to data when posting MultiPart messages.
  34. *
  35. * @see FilePart
  36. *
  37. * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
  38. *
  39. * @since 2.0
  40. */
  41. public interface PartSource {
  42. /**
  43. * Gets the number of bytes contained in this source.
  44. *
  45. * @return a value >= 0
  46. */
  47. long getLength();
  48. /**
  49. * Gets the name of the file this source represents.
  50. *
  51. * @return the fileName used for posting a MultiPart file part
  52. */
  53. String getFileName();
  54. /**
  55. * Gets a new InputStream for reading this source. This method can be
  56. * called more than once and should therefore return a new stream every
  57. * time.
  58. *
  59. * @return a new InputStream
  60. *
  61. * @throws IOException if an error occurs when creating the InputStream
  62. */
  63. InputStream createInputStream() throws IOException;
  64. }