HttpPostedFile.InputStream Property
.NET Framework 4
Gets a Stream object that points to an uploaded file to prepare for reading the contents of the file.
Assembly: System.Web (in System.Web.dll)
The following code example shows how to read the contents of the first file in the client's file collection into a byte array, and then copy the byte array to a string.
using System; using System.Web; using System.Web.UI; public class Page1: Page { protected string MyString; private void Page_Load(Object sender, EventArgs e) { HttpFileCollection MyFileCollection; HttpPostedFile MyFile; int FileLen; System.IO.Stream MyStream; MyFileCollection = Request.Files; MyFile = MyFileCollection[0]; FileLen = MyFile.ContentLength; byte[] input = new byte[FileLen]; // Initialize the stream. MyStream = MyFile.InputStream; // Read the file into the byte array. MyStream.Read(input, 0, FileLen); // Copy the byte array into a string. for (int Loop1 = 0; Loop1 < FileLen; Loop1++) MyString = MyString + input[Loop1].ToString(); } }
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Bug in the code sample
There is a bug in the code sample (even though with the current implementation, it always works, out of fluke).
The contract for Stream.Read() does not guarantee that the specified amount of bytes is read, even if the end of the stream is not reached. Therefore, the example should employ a loop, or it should use InputStream.CopyTo() to copy the data into a MemoryStream or similar. As posted, the code may exhibit future bugs when the private implementation of HttpInputStream is changed.
The contract for Stream.Read() does not guarantee that the specified amount of bytes is read, even if the end of the stream is not reached. Therefore, the example should employ a loop, or it should use InputStream.CopyTo() to copy the data into a MemoryStream or similar. As posted, the code may exhibit future bugs when the private implementation of HttpInputStream is changed.
- 7/31/2010
- TimwiTerby