2014-01-08 1 views
0

안녕하세요 여러분, imageurl을 데이터베이스에 삽입하는 방법은 무엇입니까? 내 데이터베이스에 삽입 한 후 내 imageurl 행이 NULL로 나타납니다.mvc4에서 SQL 데이터베이스에 대한 imageurl 링크를 만드는 방법

public HttpPostedFileBase ImageURL { get; set; } 

내 question.cshtml

<tr> 
     <td colspan="3"> 
      @Html.LabelFor(model => model.ImageURL) 
      @Html.TextBoxFor(model => model.ImageURL, new { type = "file", id="fileupload", name="fileupload" }) 
      @Html.ValidationMessageFor(model => model.ImageURL) 
      <img src="#" id="imgThumbnail" alt="preview" width="10%" height="15%" /> 
     </td> 

내 컨트롤러는

foreach (QuestionVM0 q1 in qo) 
      { 

       int aID = question1.ActivityID.Value; 

       string sImageURL = q1.ImageURL.ToString(); 



       Models.question1 questionCreate = new question1(); 

       questionCreate.ImageURL = sImageURL; 
       db.questions1.Add(questionCreate); 
       db.SaveChanges(); 
      } 

답변

1

귀하의 엔티티 프레임 워크 모델은 데이터베이스에 varbinary(max) 컬럼에 매핑 된 byte[] 속성을 가져야한다. 현재 잘못된 문자열로 정의한 것 같습니다. 그래서 :

public class question1 
{ 
    public byte[] ImageURL { get; set; } 
    ... 
} 

다음 뷰 모델에 HttpPostedFileBase 속성에서 읽고 EF 모델에 byte[] 속성에 복사 :

foreach (QuestionVM0 q1 in qo) 
{ 
    int aID = question1.ActivityID.Value; 

    byte[] imageData = null; 
    using (MemoryStream target = new MemoryStream()) 
    { 
     q1.ImageURL.InputStream.CopyTo(target); 
     imageData = target.ToArray(); 
    } 

    Models.question1 questionCreate = new question1(); 
    questionCreate.ImageURL = imageData; 
    db.questions1.Add(questionCreate); 
    db.SaveChanges(); 
} 

업데이트 :

이 나타납니다 파일 자체가 아닌 데이터베이스에 파일의 위치 만 저장하려고합니다. 이 경우이 작업을 수행해야합니다

foreach (QuestionVM0 q1 in qo) 
{ 
    int aID = question1.ActivityID.Value; 

    string fileName = Path.GetFileName(q1.ImageURL.FileName); 
    string path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
    q1.ImageURL.SaveAs(path); 

    Models.question1 questionCreate = new question1(); 
    questionCreate.ImageURL = path; 
    db.questions1.Add(questionCreate); 
    db.SaveChanges(); 
} 
+0

하이하지만 내 데이터베이스 테이블이 VARCHAR (255)입니다, 난 usevarbinary (최대) 캔트, 난 그냥 롤 – user3044300

+0

그런 다음 당신이 업로드 저장해야 데이터베이스에 URL 링크를 저장할 파일 시스템의 어딘가에 파일을 만든 다음이 파일의 경로 만 데이터베이스에 저장하십시오. 나는 당신이 그것을 성취 할 수있는 방법을 설명하기 위해 나의 대답을 업데이트했다. –

+0

대단히 감사합니다! – user3044300

관련 문제