Как сохранить изображения в папке после обрезки с помощью Croppie (Jquery Image cropper) - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь сохранить изображение после обрезки в папку и путь к базе данных, используя croppie, но оно конвертируется в base64, и я также не знаю, как отправить эти данные в контроллер и как я могу сохранить изображение в папку и его путь к базе данных.

Я уже пытаюсь сохранить функцию file.write, но она не отправляет обратно данные изображения на контроллер

public ActionResult AddProduct(Tbl_Product product,HttpPostedFileBase file_photo)
        {
            string name = null;
            string ext = null;           

            if (ModelState.IsValid==true)
            {
                if (file_photo != null)
                {
                    name = Path.GetFileNameWithoutExtension(file_photo.FileName);
                    ext = Path.GetExtension(file_photo.FileName);

                    string path = Path.Combine(Server.MapPath("~/ProductImages"), name + ext);
                    file_photo.SaveAs(path);
                }

                product.ProductImage = name + ext;
                product.CreatedDate = DateTime.Now;
                _unitofwork.GetRepositoryInstance<Tbl_Product>().Add(product);
                return RedirectToAction("Product");
            }
            else
            {
                ViewBag.CategoryList = GetCategory();
                return View();
            }            
        }

Я хочу сохранить изображение в папке и путь к базе данных, но оно показывает изображение base64

1 Ответ

1 голос
/ 10 апреля 2019

В croppie, после обрезки изображения вы получите результат в формате base64, сохраните этот base64 в каком-то скрытом поле, как показано ниже,

$('#imagebase64').val(base64_data);

А в методе действия вашего контроллера используйте следующий код для храненияизображение в папке.

if (product.imagebase64 != null)
{
    try
    {
         var base64Data = Regex.Match(product.imagebase64, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;

         byte[] imageBytes = Convert.FromBase64String(base64Data);

         string filename = DateTime.Now.ToString("ddMMyyyy_hhmmss"); // You can write custom name here
         string path = Path.Combine(Server.MapPath("~/ProductImages"), filename + ".jpg");

         System.IO.File.WriteAllBytes(path, imageBytes);
    }
    catch (Exception ex)
    {

    }
}
...