2

I use the MultipartFormDataStreamProvider to read uploaded files as the snippet below illustrates. However this isn't secure as it saves the files straight to temp. First, I want to inspect the raw bytes and perform some validation checks. Please show me how to access the raw bytes.

if (Request.Content.IsMimeMultipartContent())
{
    MultipartFormDataStreamProvider streamProvider = new MultipartFormDataStreamProvider("C:\temp");

     return this.Request.Content
            .ReadAsMultipartAsync<MultipartFormDataStreamProvider>(streamProvider)
            .ContinueWith((tsk) =>
            {
                 MultipartFormDataStreamProvider provider = tsk.Result;

            });

}

Fred Johnson
  • 2,539
  • 3
  • 26
  • 52
  • you need to change this `streamProvider = new MultipartFormDataStreamProvider("C:\temp");` to `streamProvider = new MultipartFormDataStreamProvider(@"C:\temp");` or change the path to use double back slashes `"\\"` – MethodMan Mar 22 '16 at 20:19
  • Or you can make things a bit more portable by using `var streamProvider = new MultipartFormDataStreamProvider(Path.GetTempPath());` – keithl8041 Jan 04 '18 at 20:53

1 Answers1

4
var provider = await Request.Content.ReadAsMultipartAsync(new MultipartMemoryStreamProvider());

foreach (var c in provider.Contents)
{
  var stream = await c.ReadAsStreamAsync();
  // do something with the stream
}
William Xifaras
  • 5,212
  • 2
  • 19
  • 21