public class Upload_Controller : Controller
{
public IActionResult Index()
{
ViewBag.Image = null;
return View();
}
public IConfigurationRoot GetConnection()
{
var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appSettings.json").Build();
return builder;
}
[HttpPost]
public IActionResult Index(FileUpload Data)
{
try
{
Byte[] bytes = null;
if (Data.File.FileName != null)
{
using (MemoryStream ms = new MemoryStream())
{
Data.File.OpenReadStream().CopyTo(ms);
bytes = ms.ToArray();
}
string connectionstring = GetConnection().GetSection("ConnectionStrings").GetSection("DefaultConnection").Value;
SqlConnection con = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand("Insert into fileUpload(FileNames,Filepic,UploadDate) values(@FileNames,@Filepic,@UploadDate) select SCOPE_IDENTITY()", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@FileNames", Data.Name);
cmd.Parameters.AddWithValue("@Filepic", bytes);
cmd.Parameters.AddWithValue("@UploadDate", DateTime.Now);
con.Open();
ViewBag.ID = cmd.ExecuteScalar();
con.Close();
ViewBag.Image = ViewImage(bytes);
}
}
catch (Exception ex)
{
throw ex;
}
return View();
}
[NonAction]
private string ViewImage(byte[] arrayImage)
{
string base64String = Convert.ToBase64String(arrayImage, 0, arrayImage.Length);
return "data:image/png;base64," + base64String;
}
public IActionResult Download(int id)
{
byte[] bytes = null;
string name = string.Empty;
string connectionstring = GetConnection().GetSection("ConnectionStrings").GetSection("DefaultConnection").Value;
using (SqlConnection con = new SqlConnection(connectionstring))
{
using (SqlCommand cmd = new SqlCommand("Select * from fileUpload where id=@FileID", con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@FileID", id);
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
if (sdr.HasRows)
{
bytes = (byte[])sdr["Filepic"];
name = Convert.ToString(sdr["FileNames"]);
}
con.Close();
}
}
return File(bytes, "application/png", name + ".png",
lastModified: DateTime.UtcNow.AddSeconds(-5),
entityTag: new Microsoft.Net.Http.Headers.EntityTagHeaderValue("\"MyCalculatedEtagValue\""));
}
}