2016-10-20 2 views
-1

저는 엔티티 프레임 워크와 함께 ASP.NET C#을 사용하고 있으며 프로필의 이미지를 업로드하고 표시하려고합니다. 상기 제어기 내 여기 Entity Framework를 사용하여 이미지를 가져 오는 방법은 무엇입니까?

가보기 파일의 관련 부분 (Manage.cshtml) 여기서
<input type="file" name="form-register-photo" id="form-register-photo" disabled> 

컨트롤러 파일의 관련 부분 (Manage.cs)

[HttpPost] 
public ActionResult Manage(ManageViewModel manageviewmodel,HttpPostedFileBase upload) 
{ 
    TheFoodyContext db = new TheFoodyContext(); 
    User user_to_update = db.Users.SingleOrDefault(s => s.email == manageviewmodel.Email); 

    if (ModelState.IsValid) 
    { 
     if (user_to_update != null && (upload != null && upload.ContentLength > 0)) 
     { 

      var fileName = Path.GetFileName(upload.FileName); 
      var path = Path.Combine(Server.MapPath("~/FOODY"), fileName); 

      user_to_update.email = manageviewmodel.Email; 
      user_to_update.fname = manageviewmodel.FirstName; 
      user_to_update.lname = manageviewmodel.LastName; 
      user_to_update.phone = manageviewmodel.Phone; 
      user_to_update.photo = path; 
      user_to_update.address = manageviewmodel.Address; 
      user_to_update.city = manageviewmodel.City; 
      user_to_update.postcode = manageviewmodel.PostCode; 
      user_to_update.district = manageviewmodel.District; 
      user_to_update.user_type = manageviewmodel.UserType; 
      user_to_update.status = manageviewmodel.Status; 

      db.SaveChanges(); 
      return RedirectToAction("Manage"); 
     } 

    } 
    return View(manageviewmodel); 

} 

다른 필드도 코딩했습니다. 그래서 그들과 함께 사진을 업로드하고 싶습니다. 이는 단일 버튼 클릭으로 발생한다는 것을 의미합니다.

여기 내 모델 클래스 (ManageViewModel.cs)

public class ManageViewModel 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public string Email { get; set; } 

    public string Phone { get; set; } 

    public string Photo { get; set; } 

    public string Address { get; set; } 

    public string City { get; set; } 

    public int PostCode { get; set; } 

    public string District { get; set; } 

    public string UserType { get; set; } 

    public string Status { get; set; } 
} 

하지만이 한 장의 사진 업로드 부분에 대한

이 제대로 작동하지 않았다이다. 그래서 나는 이것을 어떻게 관리 해야할지 정말로 모른다.

+0

user_to_update.photo에이 무슨 참조하십시오 try catch block에 추가 및 디버그에서 코드를 실행할 수있다 데이터베이스의 해당 파일에 저장합니다. 그 맞습니까? 또한, "제대로 작동하지 않았다"는 것은 무엇을 의미합니까? 정확하게 작동하지 않은 것은 무엇이며 어떤 오류가 있었습니까? – squillman

+0

파일 입력은'name = "form-register-photo"입니다. 따라서 POST 메소드의 매개 변수는 - HttpPostedFileBase form-register-photo'와 일치해야합니다. –

+0

오류가 없지만 해당 파일의 경로는 데이터 베이스. – Punya

답변

1

Entity Framework는 글자 그대로 이미지를 업로드하는 데 도움이되지 않습니다.

  1. 코드에서 실제로 호스트 드라이브에 이미지를 업로드하지 않고 Users의 데이터베이스에서 1 레코드 만 편집하면됩니다. 간단한 들어

, 당신은 물리적으로 파일을 저장하기 위해 아래와 같이 뭔가를해야합니다

var path = Path.Combine(Server.MapPath("~/FOODY"), fileName); 
upload.SaveAs(newSPath); 
  1. 당신은 보이지 않았다 정확히 결과가 무엇인가 이 후 db.SaveChanges(); 표시 사진 경로에 오류가 있는지 여부가 확실하지 않습니다. 나의 제안은, 당신이 경로를 저장 한 다음 서버의 파일 시스템에 파일을 저장하고 싶은 당신처럼 보이는 코드에서 db.SaveChanges();
관련 문제