0

내가 무엇이 빠졌는지 모르지만 C# MVC 3을 사용하여 파일을 업로드해야합니다. 여기에 나온 지침을 따르지만 파일은 항상 비어 있습니다. 여기 MVC 3 파일 업로드 - 컨트롤러의 Null 파일

내 실제 테스트 코드 :

HTML

@using (Html.BeginForm("Prc", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <input type="file" name="file" id="file" /> 
    <input type="submit" value="submit" /> 
} 

컨트롤러

[HttpPost] 
public ActionResult Prc(HttpPostedFile file) 
{ 
    if (file != null && file.ContentLength > 0) 
    { 
     var filename = System.IO.Path.GetFileName(file.FileName); 
     var path = System.IO.Path.Combine(Server.MapPath("~/Content/Images"), filename); 
     file.SaveAs(path);    
    } 

    return RedirectToAction("Index"); 
} 

내가 웹 응용 프로그램을 실행하면, 내가 파일을 첨부하고 제출을 클릭합니다 . 그러나 Controller에 도달하면 file 개체는 null입니다. 항상 null. XML 파일, JPEG 파일 및 GIF 파일을 시도했지만 어느 것도 작동하지 않았습니다.

이외의 코드를 구성해야합니까? 이러한 코드는 무엇입니까?

감사 MVC에서

답변

2

는 대신 HttpPostedFileHttpPostedFileBase를 사용해야합니다 :

[HttpPost] 
public ActionResult Prc(HttpPostedFileBase file) 
{ 
    //... 
} 
+0

나는 바보 같은 것을 놓친다는 것을 안다. 감사!! – Devmonster

1

한가지 더는 당신을 여행 할 수도 있습니다.

는 asp.net의 MVC 3 면도날을 사용하여, 나는 컨트롤러 메서드에 전달 된 HttpPostedFileBase 변수의 이름이보기에 파일 입력 태그의 ID와 이름과 일치해야합니다 것을 발견 그냥 놀랐습니다. 그렇지 않으면 asp.net은 HttpPostedFileBase 변수에 대해 null을 전달합니다. 파일 입력은 다음과 같습니다 예를 들어

는 : 공공 ActionResult을 UploadFile : = "파일"이름 = "FILEX"ID = "FILEX"< 입력 타입/>

그리고 당신의 컨트롤러 방법은 다음과 같습니다 (HttpPostedFileBase filey)

"filey"변수에 NULL이 표시됩니다. 그러나 컨트롤러 메서드에서 "filey"를 "filex"로 바꾸면 성공적으로 파일을 게시합니다.

+0

Tom, 좋은 콜 아웃. 여기 당신의 게시물은 몇 시간 만에 나를 끌어 당겼습니다. – Porschiey