2017-03-02 2 views
1

저는 컨트롤러에서 ajax 호출로 전송 된 파일을 받아 지정된 경로에 저장하는 함수가 있습니다. 나는 이미지 대신에 더 많은 데이터를 보내기를 희망하면서 모델을 가지고 어떻게이 작업을 할 수 있을지 궁금해하고있었습니다.모델과 함께 작동하도록 IFormFile 함수 만들기

뷰 모델 :

public class PhotoViewModel 
{ 
    // Other strings 

    public IFormFile userimage { get; set; } 
} 

컨트롤러 : (작업) 모델 모델과 버전에

[HttpPost] 
public async Task<IActionResult> Post(IFormFile file) 
{ 
    var filePath = Path.GetFullPath(@"C:\Users\me\documents\" + file.FileName); 

    if (file.Length > 0) 
    { 
     using (var stream = new FileStream(filePath, FileMode.Create)) 
     { 
      await file.CopyToAsync(stream); 
     } 
    } 

    return StatusCode(200); 
} 

시도없이 :

[HttpPost] 
public async Task<IActionResult> PhotoData(PhotoViewModel model) 
{ 
    var filePath = Path.GetFullPath(@"C:\Users\me\documents\" + model.userimage.FileName); 

    if (ModelState.IsValid) 
    { 
     if (model.userimage.Length > 0) 
     { 
      using (var stream = new FileStream(filePath, FileMode.Create)) 
      { 
       await model.userimage.CopyToAsync(stream); 
      } 
     } 
    } 

    return StatusCode(200); 
} 

이 시도는 저를 멀리하지 않습니다. 중단 점을 설정하면 filePath를 설정할 때 실패하는 것을 볼 수 있지만 모델 작업 방법을 모르겠습니다. 어떤 도움을 주셔서 감사합니다.

답변

0

받고있는 오류 메시지는 무엇이며 API 요청을 보내는 데 사용하는 클라이언트 측 코드는 무엇입니까?

FormData 개체를 사용하고 필요한 속성으로 FormData 개체를 채워야합니다.

var formData = new FormData(); 
formData.append(add PhotoViewModel properties) 
formData.append(userimage, <file>); 
관련 문제