0% found this document useful (0 votes)
75 views7 pages

Demo File Server: Public Class

This document outlines the steps to create a file server using ASP.NET MVC and SQL Server. It includes creating model classes for file details and employees, setting up database tables and stored procedures for file management, adding a controller with methods for uploading, downloading and viewing files, and creating views for the file upload and details pages.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views7 pages

Demo File Server: Public Class

This document outlines the steps to create a file server using ASP.NET MVC and SQL Server. It includes creating model classes for file details and employees, setting up database tables and stored procedures for file management, adding a controller with methods for uploading, downloading and viewing files, and creating views for the file upload and details pages.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

DEMO FILE SERVER

Create Model Class


EmpModel.cs class and FileDetailsModel
public class EmpModel
{

[Required]
[DataType(DataType.Upload)]
[Display(Name = "Select File")]
public HttpPostedFileBase files { get; set; }
}

public class FileDetailsModel


{

public int Id { get; set; }


[Display(Name = "Uploaded File")]
public String FileName { get; set; }
public byte[] FileContent { get; set; }
}

Step 3 -Crear La BD la table y los SP


CREATE TABLE [dbo].[FileDetails](
[Id] [int] IDENTITY(1,1) NOT NULL,
[FileName] [varchar](60) NULL,
[FileContent] [varbinary](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

Create Procedure [dbo].[AddFileDetails]


(
@FileName varchar(60),
@FileContent varBinary(Max)
)
as
begin
Set NoCount on
Insert into FileDetails values(@FileName,@FileContent)

End

CREATE Procedure [dbo].[GetFileDetails]


(
@Id int=null

)
as
begin

select Id,FileName,FileContent from FileDetails


where Id=isnull(@Id,Id)
End

Referenciar el Dapper
Step 4 - Add Controller Class

Crear el Controller FilesController


Conexion con la Base de datos

#region Database connection

private SqlConnection con;


private string constr;
private void DbConnection()
{
constr = ConfigurationManager.ConnectionStrings["dbcon"].ToString();
con = new SqlConnection(constr);

}
#endregion

Operaciones con la BD
#region Database related operations
private void SaveFileDetails(FileDetailsModel objDet)
{

DynamicParameters Parm = new DynamicParameters();


Parm.Add("@FileName", objDet.FileName);
Parm.Add("@FileContent", objDet.FileContent);
DbConnection();
con.Open();
con.Execute("AddFileDetails", Parm, commandType:
System.Data.CommandType.StoredProcedure);
con.Close();

}
#endregion

Subir Archivos

#region Upload Download file

public ActionResult FileUpload()


{
return View();
}

[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase files)
{

String FileExt = Path.GetExtension(files.FileName).ToUpper();

if (FileExt == ".PDF")
{
Stream str = files.InputStream;
BinaryReader Br = new BinaryReader(str);
Byte[] FileDet = Br.ReadBytes((Int32)str.Length);

FileDetailsModel Fd = new Models.FileDetailsModel();


Fd.FileName = files.FileName;
Fd.FileContent = FileDet;
SaveFileDetails(Fd);
return RedirectToAction("FileUpload");
}
else
{

ViewBag.FileStatus = "Invalid file format.";


return View();

[HttpGet]
public FileResult DownLoadFile(int id)
{

List<FileDetailsModel> ObjFiles = GetFileList();

var FileById = (from FC in ObjFiles


where FC.Id.Equals(id)
select new { FC.FileName,
FC.FileContent }).ToList().FirstOrDefault();

return File(FileById.FileContent, "application/pdf", FileById.FileName);

}
#endregion

Ver Archivos

#region View Uploaded files


[HttpGet]
public PartialViewResult FileDetails()
{
List<FileDetailsModel> DetList = GetFileList();

return PartialView("FileDetails", DetList);

}
private List<FileDetailsModel> GetFileList()
{
List<FileDetailsModel> DetList = new List<FileDetailsModel>();

DbConnection();
con.Open();
DetList = SqlMapper.Query<FileDetailsModel>(con, "GetFileDetails",
commandType: CommandType.StoredProcedure).ToList();
con.Close();
return DetList;
}

#endregion

Step 5 - Create strongly typed View en la Carpeta Files


FileUpload.cshtml

@model Demo3.Models.EmpModel

@{
ViewBag.Title = "FileUpload";
}

<h2>FileUpload</h2>

@using (Html.BeginForm("FileUpload", "Files", FormMethod.Post, new { enctype =


"multipart/form-data" }))
{

@Html.AntiForgeryToken()

<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.files, htmlAttributes: new { @class =
"control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.files, "", new { @type = "file",
@multiple = "multiple" })
@Html.ValidationMessageFor(model => model.files, "", new { @class =
"text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Upload" class="btn btn-primary" />
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10 text-success">
@ViewBag.FileStatus
</div>
</div>

<div class="form-group">
<div class="col-md-8">
@Html.Action("FileDetails", "Files")

</div>
</div>

</div>
}

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

FileDetails.cshtml

@model IEnumerable<Demo3.Models.FileDetailsModel>

<table class="table table-bordered">


<tr>
<th class="col-md-4">
@Html.DisplayNameFor(model => model.FileName)
</th>

<th class="col-md-2"></th>
</tr>

@foreach (var item in Model)


{
<tr>
<td>
@Html.DisplayFor(modelItem => item.FileName)
</td>

<td>
@Html.ActionLink("Download", "DownLoadFile", new { id = item.Id })

</td>
</tr>
}

</table>

You might also like