What is the best practice for storing a file upload to a MemoryStream (C#)?

15,391

Solution 1

If flUpload.FileBytes is a byte array, you can use the MemoryStream constructor that accepts the contained data as a parameter:

MemoryStream memStream = new MemoryStream(flUpload.FileBytes);

If not (if it just implements IEnumerable), you can convert it to a byte array using Linq:

MemoryStream memStream = new MemoryStream(flUpload.FileBytes.ToArray());

Solution 2

    protected void lnkUploadFile_Click(object sender, EventArgs e)
    {
        using (MemoryStream memStream = new MemoryStream(flUpload.FileBytes))
        {
            using (FileStream fstream = new FileStream(@"C:/test/" + 
                flUpload.FileName, FileMode.Create))
            {
                memStream.WriteTo(fstream);
            }
        }
    }
Share:
15,391
Kenneth J
Author by

Kenneth J

Updated on June 05, 2022

Comments

  • Kenneth J
    Kenneth J almost 2 years

    I need to temporary store a file upload to a MemoryStream.

    What would be the best method to do this using asp.net (3.5)?

    Here's what I have so far. It works (locally tested), but it does not look right to me.

    protected void lnkUploadFile_Click(object sender, EventArgs e)
        {
            MemoryStream memStream = new MemoryStream();
    
            BinaryWriter sWriter = new BinaryWriter(memStream);
    
            foreach (byte b in flUpload.FileBytes)
            {
                sWriter.Write(b);
            }
    
            sWriter.Flush();
    
            // writing to file to verify file stream converted correctly
            FileStream fstream = new FileStream(@"C:/test/" + flUpload.FileName, FileMode.Create);          
            memStream.WriteTo(fstream);         
            fstream.Dispose();
    
            memStream.Dispose();
        }
    
  • mosheb
    mosheb about 7 years
    the question was for a memorystream, not file