Click here to Skip to main content
Click here to Skip to main content
Go to top

File Uploader in ASP.NET and ASP.NET MVC

, 27 Jan 2009
Rate this:
Please Sign up or sign in to vote.
A class to upload files in ASP.NET and ASP.NET MVC

Introduction

Uploading files is a common scenario and an essential part of many web applications. Here I have created a class which can be used to upload files easily. The uploader class automatically validates all the necessities i.e. validation of upload directory, file extensions, etc.

Background

There are plenty of resources on uploading a file in ASP.NET. But I have felt the need to have a class which would be easier and customizable as well as perform validation, add prefix and/or suffix to file, encrypt filename, allow choice to overwrite existing file or not and so on. You have to just set the necessary properties you need. You can use it in your ASP.NET as well as ASP.NET MVC applications.

Using this Class

Here I am give an example to use this class:

    Uploader uploader = new Uploader();

    uploader.UploadPath     = Server.MapPath("~\\Content\\Uploads");
    uploader.IsLowerName    = true;
    uploader.IsEncryptName  = false;

    uploader.Prefix = "Hello_";
    uploader.Suffix = "_Boom";

    uploader.AllowedExtensions.Add(".jpg");
    uploader.AllowedExtensions.Add(".jpeg");
    uploader.AllowedExtensions.Add(".gif");
    uploader.AllowedExtensions.Add(".png");

    bool success = uploader.DoUpload("MyFile");

    if (success)
    {
        //TODO: Code to handle success
    }
    else
    {
        //TODO: Code to handle failure
    }

Here MyFile is the name of file input type.

 <!-- In Html -->
<input type="file" name="MyFile" id="MyFile" />
<%--In tradition ASP.NET --%>
<asp:FileUpload ID="MyFile" runat="server" />

There is an overload of DoUpload() method. You can either pass the name of the file input as shown above or HttpPostedFile file object as follows:

HttpPostedFile postedFile =
	HttpContext.Current.Request.Files["MyFile"] as HttpPostedFile;
uploader.DoUpload(postedFile);

There is also a method by which you can get the HttpPostedFile object by supplying the name of the file input.

HttpPostedFile postedFile = uploader.GetHttpPostedFile("MyFile");
uploader.DoUpload(postedFile);

Configuration Settings

General Settings
UploadPath Full path where file should be uploaded excluding the filename(Mandatory)
UploadName The name which should be used to save the uploaded file with extension (Optional)
Prefix The prefix to the filename (Optional)
Suffix The suffix to the filename (Optional)
Conditional Settings
MinSize The minimum size of the file in bytes
MaxSize The maximum size of the file in bytes
IsOverwrite Whether a file is to overwrite or not
IsEncryptName Whether a file name is to encrypt or not
IsLowerName Whether a file name is to lower or not
IsRemoveSpace Whether space is to be removed from a file name or not
AllowedExtensions The allowed file extensions with period
IsRemoveSpace The allowed mime types
Object Properties
UploadError The object of UploadError class. This class holds error code and error message.
PostedFile The object of PostedFile class. This class holds different information of posted file.
UploadedFile The object of UploadedFile class. This class holds different information of uploaded file.
Properties of UploadError Class
Code The error code
Message The error message
Properties of PostedFile and UploadedFile Class
FileName The file name with extension
RawName The file name excluding extension
FileExtension The file extension with period
MimeType The file MIME type
FullPath The absolute path including the file name
FilePath The absolute path to the file excluding the file name
FileSize The size of the file in bytes
IsImage Whether the file is an image or not

If your upload is not successful, then you can get the error code and message with the UploadError property. For example:

string erroCode    = uploader.UploadError.Code;
string errorMessage = uploader.UploadError.Message;

Remember, here the error code is not the actual HTTP error number. I have used numbers from 1 to 10 so that corresponding message can be customized.

On the other hand, if your upload attempt is successful, then you can use information related to the posted file as well as uploaded file by PostedFile and UploadedFile. For example:

string previousFilename = uploader.PostedFile.FileName;
string previousFilePath = uploader.PostedFile.FilePath;

string uploadedFilename = uploader.UploadedFile.FileName;
string uploadedFilePath = uploader.UploadedFile.FilePath;

Enjoy this!

Conclusion

You can see it in my blog.

History

  • 23rd January, 2009: Initial version

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Jahedur Rahman Chowdhury
Software Developer (Senior)
Bangladesh Bangladesh
Software Engineer, Bangladesh.

Comments and Discussions

 
GeneralFile Upload in MVC3 By Using Razor PinmemberBinu198516-Jun-14 7:42 
Questionthanks Pinmembergüven şahin21-May-14 3:25 
SuggestionImprovement your library Pinmembercodeproject.ir31-Jul-12 12:34 
GeneralWell approach PingroupMd. Marufuzzaman23-Aug-09 5:42 
GeneralError!Help PinmemberNguyennamhs26-May-09 23:10 
GeneralRe: Error!Help PinmemberMohammad Jahedur Rahman26-May-09 23:53 
GeneralRe: Error!Help PinmemberNguyennamhs28-May-09 0:27 
GeneralRe: Error!Help PinmemberMohammad Jahedur Rahman28-May-09 2:24 
GeneralRe: Error!Help [modified] PinmemberNguyennamhs28-May-09 17:10 
Thank u because of the your enthusiasm help.But these errors still happen :
 
when I run I receive :
 
-----------------------------------------------------------------
http://upnhanh.sieuthinhanh.com/userimages/images/sieuthiNHANH2009052914822mjy5odvkow99009.jpeg[^]
-----------------------------------------------------------------
 
modified on Thursday, May 28, 2009 11:23 PM

GeneralRe: Error!Help PinmemberMohammad Jahedur Rahman28-May-09 19:24 
GeneralRe: Error!Help PinmemberNguyennamhs28-May-09 21:23 
GeneralThanks for this peace og code Pinmembermsheikh200918-May-09 16:59 
GeneralThe code is working good except the upload is empty Pinmemberhhzj20044-May-09 0:57 
GeneralRe: The code is working good except the upload is empty PinmemberMohammad Jahedur Rahman4-May-09 1:28 
GeneralRe: The code is working good except the upload is empty Pinmemberhhzj20044-May-09 1:57 
GeneralRe: The code is working good except the upload is empty PinmemberMohammad Jahedur Rahman4-May-09 2:21 
GeneralRe: The code is working good except the upload is empty Pinmemberhhzj20044-May-09 3:44 
Generalgreat job PinmemberJuergen Gutsch21-Feb-09 0:13 
GeneralDifferences with MVC and non-MVC PinmemberSteve Maier27-Jan-09 10:18 
GeneralRe: Differences with MVC and non-MVC PinmemberMohammad Jahedur Rahman27-Jan-09 17:10 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140916.1 | Last Updated 27 Jan 2009
Article Copyright 2009 by Jahedur Rahman Chowdhury
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid