ASP.NET CV Загрузить изображение

Я хотел бы загрузить изображение в приложении ASP.NET CV. Это не с загрузкой файлов. Я хочу загрузить фотографии, нажав на ссылку. Как мне это сделать? Спасибо:)

аватарка в приложении

2 ответа

Я видел, что вы специально просили не использовать FileUpload, но на всякий случай.

Вы можете переместить элемент управления FU из области просмотра и добавить LinkButton, который будет иметь JS в OnClientClick, подобный

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <script>
        function clickFile() {
            afl = document.getElementById("<%=FU.ClientID%>");
            afl.click();
            __doPostBack('__Page', 'Argument');
        }
    </script>
    <asp:FileUpload runat="server" ID="FU" style="position:absolute;left:-4000px;" />
    <asp:LinkButton ID="asd" runat="server" OnClientClick="javscript:{clickFile();}">click</asp:LinkButton>
    <asp:Label runat="server" ID="Label1"></asp:Label>
</asp:Content>

и в коде позади:

protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
            {
                Boolean fileOK = false;
                if (FU.HasFile)
                {

                    fileOK = true;

                }

                if (fileOK)
                {
                    try
                    {
                        FU.PostedFile.SaveAs(@"C:\temp\" + FU.FileName);
                        Label1.Text = "File uploaded!";
                    }
                    catch (Exception ex)
                    {
                        Label1.Text = "File could not be uploaded.";
                    }
                }
            }
        }

Я сделал что-то вроде этого,

CSHTML;

<div class="form-group animated fadeInLeft">
  <label class="col-md-2 control-label">Select File : </label>
    <div class="col-md-10">
        @Html.TextBox("file", null, new { type="file", @class = "form-control", accept="image/x-pngi image/gif, image/jpeg" })
        @Html.ValidationMessage("FileErrorMessage")
      </div>
</div>

HomeController или SomeController.cs;

public ActionResult Add(Contact c, HttpPostedFileBase file){
   if (file != null)
        {
            if (file.ContentLength > (512 * 100))
            {
                ModelState.AddModelError("FileErrorMessage", "File size must be within 512KB");
            }
            string[] allowedType = new string[] { "image/png", "image/gif", "image/jpeg", "image/jpg" };
            bool isFileTypeValid = false;
            foreach (var i in allowedType)
            {
                if(file.ContentType == i.ToString())
                {
                    isFileTypeValid = true;
                    break;
                }
            }
            if (!isFileTypeValid)
            {
                ModelState.AddModelError("FileErrorMessage", "Only .png,.gif and jpg");
            }
        }

        if (ModelState.IsValid)
        {
            if (file != null)
            {
                string savePath = Server.MapPath("~/Images");
                string fileName = Guid.NewGuid() + Path.GetExtension(file.FileName);
                file.SaveAs(Path.Combine(savePath, fileName));
                c.ImagePath = fileName;
            }
            using (MyContactBookEntities dc = new MyContactBookEntities())
            {
                dc.Contacts.Add(c);
                dc.SaveChanges();
            }
            return RedirectToAction("Index");
        }
        else
        {
            return View(c);
        }
    }

MyContactBookEntities - это соединение с моей базой данных, а Contacts - это имя таблицы, в которой будут сохраняться изображения.

Другие вопросы по тегам