Member 12753551 Ответов: 1

Как получить изображения базы данных и отобразить другую страницу в ASP.NET MVC 4


обзорная страница
=========
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script src="../../Scripts/form.js" type="text/javascript"></script>
<script>
    $(document).on("click", "#btnid", function (event) {
        event.preventDefault();
        var fileOptions = {
            success: res,
            dataType: "json"
        }
        $("#formid").ajaxSubmit(fileOptions);
    });
</script>
    <script src="//code.jquery.com/jquery-1.11.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function ShowImagePreview(input) {
            if (input.files && input.files[0]) {
                var reader = new FileReader();
                reader.onload = function (e) {
                    $('#<%=ImgPrv.ClientID%>').prop('src', e.target.result)
                        .width(240)
                        .height(150);
                };
                reader.readAsDataURL(input.files[0]);
                }
            }
    </script>
<div id="dialog">
    @Html.ValidationMessage("DuplicateGroup")
    @Html.ValidationMessage("GroupSaved")
</div>
@using (Html.BeginForm("SubmitImage", "Carrer", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
    <fieldset>
        <div class="float-left">
            <div id="dialog">
                @Html.ValidationMessage("DuplicateImage")
                @Html.ValidationMessage("ImageSaved")
            </div>
            <center>
                <h2>Submit Image</h2>
            </center>
            <div class="editor-label">
                @Html.LabelFor(Model => Model.strGroupId)
            </div>
            <div class="editor-field">
                @Html.EditorFor(Model => Model.strGroupId)
                <div id="dialog">
                    @Html.ValidationMessageFor(Model => Model.strGroupId)
                </div>
            </div>
            <div class="editor-label">
                @Html.LabelFor(Model => Model.strGroupName)
            </div>
            <div class="editor-field">
                @Html.EditorFor(Model => Model.strGroupName)
                <div id="dialog">
                    @Html.ValidationMessageFor(Model => Model.strGroupName)
                </div>
            </div>
            <div class="editor-label">
                @Html.LabelFor(Model => Model.SelectImage)
            </div>
            <input type="file" name="file" id="file" />
            <div id="dialog">
                @Html.ValidationMessage("CustomError")
            </div>
            <center>
                <input type="submit" value="Upload" />
            </center>
        </div>
    </fieldset>
}
@Scripts.Render("~/bundles/jqueryval")


Код контроллера
====================
 public class CarrerController : Controller
    {
        //
        // GET: /Carrer/

        public ActionResult SubmitImage()
        {
            return View();
        }
        [HttpPost]
        //public ActionResult SubmitImage(HttpPostedFileBase file, Carrer model)
        public ActionResult SubmitImage(Carrer model)
        {
            //string blnImageUploaded;


            if (model.file != null && model.file.ContentLength > 0)
            {
                try
                {
                    string path = Path.Combine(Server.MapPath("~/UploadImages"),
                                             Path.GetFileName(model.file.FileName));
                    model.file.SaveAs(path);

                    InsertMapDetails(model, path);

                    //if (blnImageUploaded == true)
                    //{
                    ViewBag.Message = "File uploaded successfully";
                    //}
                }

                catch (Exception ex)
                {
                    ViewBag.Message = "ERROR:" + ex.Message.ToString();
                }
            }
            else
            {
                ViewBag.Message = "You have not specified a file.";
            }
            return View();
        }

        public ActionResult Save(FormCollection formCollection)
        {
            if (Request != null)
            {
                HttpPostedFileBase file = Request.Files["UploadedFile"];

                if ((file != null) && (file.ContentLength > 0) && !string.IsNullOrEmpty(file.FileName))
                {
                    string fileName = file.FileName;
                    string fileContentType = file.ContentType;
                    byte[] fileBytes = new byte[file.ContentLength];
                    file.InputStream.Read(fileBytes, 0, Convert.ToInt32(file.ContentLength));
                }
            }

            return View();
        }


        public bool checkImageUploated(string strGroupId, string strGroupName, string strFullPath) //This method checks the valid image is uploaded in table or not.
        {
            bool blnValidImage = false;
            string connString = ConfigurationManager.ConnectionStrings["DBconnectionString"].ConnectionString; // Read the connection string from the web.config file
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("Update MAP set IMAGEPATH = '" + strFullPath + "' where GROUPID = '" + strGroupId + "' and GROUPNAME = '" + strGroupName + "' ", conn);
                blnValidImage = Convert.ToBoolean(cmd.ExecuteNonQuery());
                return blnValidImage;
            }
        }


        public string InsertMapDetails(Carrer model, string strFullPath)
        {

            SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DBconnectionString"].ConnectionString);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "Insert into MAP (GROUPID,GROUPNAME,IMAGEPATH) values('" + model.strGroupId.Trim() + "','" + model.strGroupName.Trim() + "','" + strFullPath + "')";
            cmd.Connection = con;
            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                return "Success";
            }
            catch (Exception es)
            {
                throw es;
            }
        }

Model Code
===================
    public class Carrer
    {
        [Required]
        [Display(Name = "GroupId")]
        public string strGroupId { get; set; }
        [Required]
        [Display(Name = "GroupName")]
        public string strGroupName { get; set; }

        [Display(Name = "Select Image")]
        public string SelectImage { get; set; }

        [Required]
        [Display(Name = "Choose File")]
        public HttpPostedFileBase file { get; set; }
    }
}

    }
}


Что я уже пробовал:

Теперь мой код предназначен только для загрузки изображений в базу данных. я не могу сделать отображение изображений базы данных на другой странице.., пожалуйста, помогите кому-нибудь

Sinisa Hajnal

Google how to read images from the database and put that on the page where you want to show it. В общем случае вам нужен байтовый массив, который будет представлять байты изображения, а затем растровый объект, который его получит.

Member 12753551

мне нужна строка imagepath, чтобы показать

1 Ответов

Рейтинг:
1

David_Wimbley

Поэтому вам нужно будет добавить еще одно представление в свой проект и добавить еще одно действие в свой контроллер.

Представление можно назвать Show.cshtml или что-то в этом роде.

В вашем контроллере у вас будет что-то вроде

public class HomeController : Controller 
{
   public ActionResult Show()
   {
       var imagesFromDb = //do some database SELECT operation here (EF/ADO.NET..etc). Lets say its of class type ImageIndex
        
        //Here you are returning the imagesFromDb as your model to your View, the view being Show.cshtml.
        return View(imagesFromDb);
   }
}


По вашему мнению, у вас было бы что-то вроде


@model IEnumerable<ImageIndex>

@foreach(var image in Model)
{
    < img src='@image.PathToImage' / >
}


Я делаю предположение, что вы храните само изображение где-то в файловой системе и храните каталог/полный путь к этому изображению в своей базе данных.

Это может быть не совсем то решение, которое отвечает вашим потребностям, но помните, что вам, возможно, придется проделать некоторую работу ног, чтобы этот пример соответствовал вашему решению. Единственный смысл этого ответа-показать вам один из многих способов отображения изображений, загруженных в ваше приложение, в другом представлении.