Im working in MVC4 visual studio a few time ago. im really new in this and hope anyone can help me.
I have a form in my website with input type="text" and input type="file".
I want to insert a new item in my database with multiple imageuploads.
i try to do to do this in view, controller and model.
I have search something and find a code who help a lot to to the upload of several images.
But what i want is when i click on the button do the upload of all the images and inserto into my table all information from the other fields and the files names of all the images. So i can select in another page all images associated at this id.
Hope someone can help with this.
here is my code:
thanks in advance
View:
@using (Html.BeginForm("Uploading", "AdicionarRevista", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<label for="file">Nome da Empresa:</label>
<input type="text" name="Name" id="nome" /><br />
<label for="file">Titulo da Revista:</label>
<input type="text" name="Title" id="titulo" /> <br />
<label for="file">Upload:</label>
<input type="file" name="ImageUploaded" id="btnUpload" multiple="multiple" accept="image/*" /> <br />
<button type="submit" id="Upload">Upload</button>
}
Controller:
[HttpPost]
public ActionResult Uploading(ImageModel infouploadimage)
{
for (int i = 0; i < Request.Files.Count; i++)
{
if (Request.Files[i].ContentLength > 0)
{
HttpPostedFileBase uploadedFile = Request.Files[i];
string fileName = Guid.NewGuid().ToString();
string serverPath = Server.MapPath("~");
string imagesPath = serverPath + "Content\\Images\\";
string thumsise = Path.Combine(imagesPath, "Thumb" + fileName);
string thumbPath = Path.Combine(imagesPath, "Thu" + fileName);
string fullPath = Path.Combine(imagesPath, "Full" + fileName);
string Bigpath = Path.Combine(imagesPath, "big" + fileName);
string Bigpatha = Path.Combine(imagesPath, "biga" + fileName);
string Bigpathb = Path.Combine(imagesPath, "bigb" + fileName);
string Bigpathc = Path.Combine(imagesPath, "bigc" + fileName);
ImageModel.ResizeAndSave(thumsise, fileName, uploadedFile.InputStream, 80, true);
ImageModel.ResizeAndSave(thumbPath, fileName, uploadedFile.InputStream, 100, true);
ImageModel.ResizeAndSave(fullPath, fileName, uploadedFile.InputStream, 500, true);
ImageModel.ResizeAndSave(Bigpath, fileName, uploadedFile.InputStream, 200, true);
ImageModel.ResizeAndSave(Bigpatha, fileName, uploadedFile.InputStream, 250, true);
ImageModel.ResizeAndSave(Bigpathb, fileName, uploadedFile.InputStream, 150, true);
ImageModel.ResizeAndSave(Bigpathc, fileName, uploadedFile.InputStream, 50, true);
}
}
return RedirectToAction("Index", "Home");
}
Model:
public class ImageModel
{
[Required]
public string Name{ get; set; }
public string Title{ get; set; }
public HttpPostedFileWrapper ImageUploaded { get; set; }
public static void ResizeAndSave(string savePath, string fileName, Stream imageBuffer, int maxSideSize, bool makeItSquare)
{
int newWidth;
int newHeight;
Image image = Image.FromStream(imageBuffer);
int oldWidth = image.Width;
int oldHeight = image.Height;
Bitmap newImage;
if (makeItSquare)
{
int smallerSide = oldWidth >= oldHeight ? oldHeight : oldWidth;
double coeficient = maxSideSize / (double)smallerSide;
newWidth = Convert.ToInt32(coeficient * oldWidth);
newHeight = Convert.ToInt32(coeficient * oldHeight);
Bitmap tempImage = new Bitmap(image, newWidth, newHeight);
int cropX = (newWidth - maxSideSize) / 2;
int cropY = (newHeight - maxSideSize) / 2;
newImage = new Bitmap(maxSideSize, maxSideSize);
Graphics tempGraphic = Graphics.FromImage(newImage);
tempGraphic.SmoothingMode = SmoothingMode.AntiAlias;
tempGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
tempGraphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
tempGraphic.DrawImage(tempImage, new Rectangle(0, 0, maxSideSize, maxSideSize), cropX, cropY, maxSideSize, maxSideSize, GraphicsUnit.Pixel);
}
else
{
int maxSide = oldWidth >= oldHeight ? oldWidth : oldHeight;
if (maxSide > maxSideSize)
{
double coeficient = maxSideSize / (double)maxSide;
newWidth = Convert.ToInt32(coeficient * oldWidth);
newHeight = Convert.ToInt32(coeficient * oldHeight);
}
else
{
newWidth = oldWidth;
newHeight = oldHeight;
}
newImage = new Bitmap(image, newWidth, newHeight);
}
newImage.Save(savePath + fileName + ".jpg", ImageFormat.Jpeg);
//newImage.Save(savePath + fileName + ".jpg", ImageFormat.Jpeg);
image.Dispose();
newImage.Dispose();
}
public void infouploadimage(string name, string title,string filename)
{
Name= name;
Title= title;
ImageUploaded = filename; <== ERROR HERE ALSO
string connection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection connect = new SqlConnection(connection))
{
string query = "Insert Into MYtable(Name, Title, Images) Values(@name, @title, ???)";
SqlCommand command = new SqlCommand(query, connect);
command.Parameters.AddWithValue("NomeEmpresa", n_empresa);
command.Parameters.AddWithValue("Titulo", titulo_revista);
//command.Parameters.AddWithValue("filename", ImageUploaded);
connect.Open();
command.ExecuteNonQuery();
}
}
}