2014-12-05 15 views
0

MVC5를 사용합니다. 파일 업로드에 HttpPostedFileBase를 사용하여 문제가 발생했습니다. 나는 디스크에서 파일을 선택하고 텍스트 상자에 정보를 입력 할 수있는 양식이 있습니다. 양식을 제출하면 컨트롤러 작업이 호출됩니다. 이 작업에서는 파일을 열고 특정 데이터 (텍스트 상자의 데이터와 관련 있음)가 있는지 확인합니다. 그래서 여기에 몇 가지 유효성 검사를합니다. 나는 JQuery를 사용하여 그것을 할 수 없다 - 그것은 복잡하다. 서버 측 유효성 검사 만 옵션입니다. 마지막으로 유효성 검사가 실패하면 뷰에 모델을 반환하지만 파일 필드 옆에 유효성 검사 오류가 있지만 파일 필드가 비어 있습니다. 나는보기에 파일을 반환하기가 어렵다고 읽었습니다. 파일 업로드에 아약스를 사용하고 싶지 않습니다. 나는 그것을 간단하게하고 싶다. 도움이되는 기사가 있으면 나와 공유하십시오.HttpPostedFileBase의 사용자 정의 유효성 확인

문제를 어떻게 해결할 수 있습니까?

+0

Ajax를 사용하여 간단하게 해결되었습니다. 이 방법을 사용할 때의 문제점은 무엇입니까? – Shoe

답변

0

나는 당신이 파일 업로드를하기 위해 AJAX를 사용하지 않는다는 것을 안다. 그러나 나는이 솔루션이 매우 간단하다고 생각한다.

다음 jQuery 플러그인 (https://blueimp.github.io/jQuery-File-Upload/)을 사용하면 해당 프로세스를 자동화하고 파일에 유효성 검사 문제가있는 경우 오류가있는 다음 모델을 반환 할 수 있습니다. 여기

string errors = "Errors returned from complex logic"; 
if (!String.IsNullOrEmpty(errors)) 
{ 
    // error response 
    status = new ViewDataUploadFilesResult() 
    { 
     name = Path.GetFileName(hpf.FileName), 
     size = hpf.ContentLength, 
     error = errors 
    }; 
} 

는 jQuery를 파일 업로드 문서와 일치하는 응답을 필요로하는 클래스입니다 : 파일이 사용자의 컴퓨터에 이미 있기 때문에 https://github.com/blueimp/jQuery-File-Upload/wiki/Setup

public class ViewDataUploadFilesResult 
{ 
    public string name { get; set; } 
    public int size { get; set; } 
    public string type { get; set; } 
    public string url { get; set; } 
    public string error { get; set; } 
} 

내가 제대로 이해 해요 경우에만 업로드를 시도하는 현재 파일에 파일을 연관시켜야 오류가 발생합니다. 그리고 그것을 만들기 위해 업로드 할 파일을 다시 선택하지 않아도됩니다. 사용자가 이미 업로드 한 파일을 가지고 있기 때문에 실제 파일을 사용자에게 반환해야하는 다른 이유는 없습니다.

관련 문제