Upload and Download File from Database using ASP.Net Web API

This article will guide you how to upload a file in the database and download it from the database(SQL Server) using ASP.Net Web API and Entity Framework. To consume Web API you can simply use JQuery Ajax.

Create a Table in the Database

First, you need a table where file related data will be stored. Let’s create a table name uploaded_files in a database. You can have your own database name as well as table name as per your project requirement.

Creating WEB API

In order to create a WEB API, you can follow the given steps

  • Right click on Controllers folder from solution explorer
  • Click on Add
  • Click on Controller
  • Select the Web API 2 Controller – Empty option from Add Scaffold Window
  • Click on Add button
  • Give a name for Controller, example FileAPIController

Once you create FileAPIController inside Controllers folder, you have to register the Configuration for Web API in the Global.asax file so that the Web API is available for accessing on Web. To register WebApiConfig you have to use given code in Global.asax.

GlobalConfiguration.Configure(WebApiConfig.Register);

// GlobalConfiguration class reside in System.Web.Http Namespace.

You can see in below code how to register WebApiConfig in global.asax.cs file

Read more at – https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/configuring-aspnet-web-api about how to configure Web API.

If you are novice learner in ASP.Net WEB API, I would like to request you please have a look at code-adda another article for beginner. Creating your first WEB API Project

Write Http Actions in Web API

Once you create API Controller you have to write code to perform tasks. Here I have created FileAPIController to upload a file in the database and retrieve the file from the database. I am going to write three actions for various purposes like user can upload a file and save in database, the user can read all files from database and download any specific file as per their need.

Different actions are –

  • UploadFile | Type – HttpPost
  • GetFiles | Type – HttpPost
  • GetFile | Type – HttpGet

Please go through below code and understand line by line. If you have a little bit knowledge of Asp.net WEB API, you can understand the code easily.

UploadFile – This action is a HttpPost method which will allow the user to save the file in the database. file data getting converted to Byte Array which will be stored in the database along with filename and content type.

GetFile – This action is a HttpGet method which will allow the user to retrieve a file from the database into the page. Read ByteArrayContent and assign to http_Response.Content and Set the ContentDisposition Header Value and FileName. Use depositionType as attachment in ContentDispositionHeaderValue

Test API Using Postman

It is always good to test your API you have written before you jump directly into writing code. You can use either Fiddler or Postman or some other tools to test your API. Here I am using Postman. Please go through with steps mention in below image and you’ll get desired output.

fileuploaddownloadtesting1_code-adda

Once you have tested your API in API testing tool, you can check saved data in the table. Have a look at below picture.

fileuploaddownloadtesting2_code-adda

Consume WEB API

You can easily consume above API using Javascript in a view.

I am assuming you must have Idea about how to add Controller and View in ASP.Net MVC project. If not, please go through official Microsoft docs to read how to Create application in MVC.

https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction/getting-started

Output

Build the code and run the application, Navigate that particular page in the browser where you’ve written code to consume API and then upload files after that you’ll get the output as below image.

fileuploaddownloadtesting3_code-adda

Further Reading

Upload file on server using ASP.NET WEB API

About Ravi Ranjan Kumar 32 Articles
An Indian who Living, Loving & Learning Technology with different tastes and willing to share knowledge and thoughts.

1 Comment

  1. Hello ravi,

    Regarding the Database code, you didnt mentioned anything and also if you do above code as mentioned it wont run because of SQL Db

Leave a Reply