How to migrate your code for uploading files from .NET Framework to .NET Core
I recently had to migrate code, for uploading Excel, files from an older .NET Framework application to a new one which is based on .NET Core. I would like to share my learnings with you in a “before and after” form.
No HttpRequestBase any more
You will have to replace the HttpResponseBase
class from the System.Web
assembly with the HttpResponse
class from Microsoft.AspNetCore.Http.HttpResponse
. The HttpResponse is the object that you receive from the UI in your WebAPI controller.
More information about this can be found here.
Uploaded file is not in InputStream to be found, but in Body
In the older .NET Framework you would access the stream through the HttpResponseBase.InputStream
property. In the new .NET Core world you access it with the HttpResponse.Body
property.
More information about it here.
No Length property anymore. Use the ContentLength property instead
After you read the stream you want to convert it into a byte array. For that you will first have to instantiate the byte array and you will need to know its length based on the length of the stream.
You will do that by accessing the HttpResponse.ContentLength
property.
Here is the relevant question from StackOverflow.
Use the async method Stream.ReadAsync instead of Stream.Read
Replace Stream.Read()
with the preferred Stream.ReadAsync()
method to write the stream data into the byte array.
However, this also might do not read all the Bytes with one parse. For that you will have to use a while
loop and count the last bytes read till you reach the end of the byte array.
More information can be found here.