Thursday, March 22, 2012

How about an MVC file upload code sample?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;
using ApptSchedule.Models;

namespace ApptSchedEF.UsrControls
{


public partial class ucfileUpload : System.Web.UI.UserControl
{
private int usrId = 0;
public string Filename = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
PopulateDropdownLists();
}
}

protected void PopulateDropdownLists()
{
ApptSchedEntities entities = new ApptSchedEntities();
ddLstCategories.DataSource = entities.FileCategories;
ddLstCategories.DataBind();

ddLstFileTypes.DataSource = entities.FileTypes;
ddLstFileTypes.DataBind();
}
protected void btnImageUpload_Click(object sender, EventArgs e)
{
usrId = SessionCache.VendorId;
string pathRel = "~/Content/uploads/" + DateTime.Today.Year + "/" + usrId.ToString() + "/";
string path = Server.MapPath(pathRel);

Filename = FileUploadImage.FileName;
if (FileUploadImage.HasFile)
try
{
if (!Directory.Exists(path))
{
DirectoryInfo di = Directory.CreateDirectory(path);
}

FileUploadImage.SaveAs(path + FileUploadImage.FileName);
lbMsg.Text = "File name: " +
FileUploadImage.PostedFile.FileName + "
" +
FileUploadImage.PostedFile.ContentLength + " kb
" +
"Content type: " +
FileUploadImage.PostedFile.ContentType;
lbMsg.CssClass = "fieldcaption";
UploadFile(usrId, pathRel);
}
catch (Exception ex)
{
lbMsg.Text = "ERROR: " + ex.Message.ToString();
lbMsg.CssClass = "alert";
}
else
{
lbMsg.Text = "You have not specified a file.";
lbMsg.CssClass = "alert";
}

}

protected int FileType(string fileContentType, int id)
{
if (fileContentType.ToLower().Contains("image"))
{ return 1; }
else if (fileContentType.Contains("pdf"))
{ return 2; }
else if (fileContentType.Contains("doc"))
{ return 3; }
else if ((fileContentType.Contains("xls")) || (fileContentType.Contains("csv")))
{ return 4; }
else if (fileContentType.Contains("txt"))
{ return 5; }
else return id;
}
protected void UploadFile(int vendId, string pathRel)
{
ApptSchedEntities entity = new ApptSchedEntities();
VendorUploads up = new VendorUploads();
up.vendorId = vendId;
up.fileCategoryId = Convert.ToInt32(ddLstCategories.SelectedValue);
up.fileTypeId = Convert.ToInt32( ddLstFileTypes.SelectedValue);
up.filename = FileUploadImage.FileName;
up.pathURL = pathRel + FileUploadImage.FileName;
up.Year = DateTime.Today.Year;
up.DateCreated = DateTime.Today;
up.DateUpdated = DateTime.Today;
up.fileContenttype = FileUploadImage.PostedFile.ContentType;

up.fileTypeId = FileType(up.fileContenttype.ToLower(),up.fileTypeId);
up.fileSize = FileUploadImage.PostedFile.ContentLength;

entity.VendorUploads.AddObject(up);
entity.SaveChanges();
if (up.fileContenttype.StartsWith("image") == true)
{
imgtnUploadedFile.ImageUrl = "~/Content/upload/"+ up.Year + "/" + up.vendorId + "/" + up.filename;
int kbs = Convert.ToInt32(up.fileSize) / 100;
imgtnUploadedFile.ToolTip = up.filename + " fileSize=" + kbs + "kb";
}

}
}
}