namespace
My.Models
{
public class DataClasses
{
public List<FileNames>
GetFiles()
{
List<FileNames> lstFiles = new List<FileNames>();
DirectoryInfo dirInfo = new DirectoryInfo(HostingEnvironment.MapPath("~/Files"));
int i = 0;
foreach (var item in dirInfo.GetFiles())
{
lstFiles.Add(new FileNames()
{
FileId = i + 1,
FileName = item.Name,
FilePath = dirInfo.FullName + @"\" + item.Name
});
i = i + 1;
}
return lstFiles;
}
}
public class FileNames
{
public int FileId { get; set; }
public string FileName { get; set; }
public string FilePath { get; set; }
}
}
namespace My.Controllers
{
public class ReportsController : Controller
{
DataClasses objData;
public
ReportsController()
{
objData = new DataClasses();
}
//
// GET: /Reports/
public ActionResult Index()
{
var files =
objData.GetFiles();
return View(files);
}
public FileResult Download(string id)
{
int fid = Convert.ToInt32(id);
var files =
objData.GetFiles();
string filename =
(from f in files
where f.FileId == fid
select f.FilePath).First();
string contentType
= "application/pdf";
//Parameters to file are
//1. The File Path on the File
Server
//2. The content type MIME type
//3. The parameter for the file
save by the browser
return File(filename,
contentType, "Report.pdf");
}
}
}
model
IEnumerable<my.models.filenames>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create
New", "Create")
</p>
<table>
<tr>
<th>
FileId
</th>
<th>
FileName
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem
=> item.FileId)
</td>
<td>
@Html.DisplayFor(modelItem
=> item.FileName)
</td>
<td>
@Html.ActionLink("Download", "Download", new { id =
item.FileId })
</td>
</tr>
}
</table>