티스토리 뷰
오늘의 포스팅은 asp.net mvc에서 file을 업로드하는 방법에 대한 것 입니다.
1 2 3 4 5 6 | @ using (Html.BeginForm( "UploadData" , "Test" ,FormMethod.Post, new { enctype = "multipart/form-data" , id= "form" })) { <input type= "file" name= "files" > <input type= "file" name= "files" > <input type= "submit" value= "Upload" > } |
html 코드를 위와 같이 작성해주세요.
그 다음 컨트롤러에서 서버 폴더에 파일을 저장하는 방법을 보여드릴게요!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [HttpPost] public ActionResult (IEnumerable<HTTPPOSTEDFILEBASE> files) { foreach (var file in files) { if (file.ContentLength > 0) { var fileName = Path.GetFileName(file.FileName); var extName = Path.GetExtension(file.FileName).Substring(1).ToLower(); var path = Path.Combine(Server.MapPath( "~/Data/files" ), fileName); file.SaveAs(path); //파일 저장 using (var reader = new System.IO.BinaryReader(file.InputStream)) // <= 파일을 byte배열로 변환시키는 방법 { byte [] file_content = reader.ReadBytes(file.ContentLength); } } } } |
controller에서 이런 방법으로 파일을 서버 폴더에 저장할 수 있습니다!
이 서버 폴더 안에 있는 파일을 다운로드 하는 방법은
1 |
이런 방법으로 사용하면 됩니다. filename에 확장자 까지 같이 적어주셔야해요! ㅎㅎ
다음으로는 데이터베이스 안에 있는 파일을 다운로드 하는 방법에 대해 알아볼게요.
1 2 3 4 5 6 7 8 | public FileContentResult file_down( string appr_no, string file_seq) { List< GB_INT_GET_APPR_FILE_INFO_Result> file = db2.GB_INT_GET_APPR_FILE_INFO(appr_no, file_seq).ToList(); var fileRes = new FileContentResult(file[0].file_attach.ToArray(), "application/octet-stream" ); fileRes.FileDownloadName = file[0].file_name; return fileRes; } |
일단 "GB_INT_GET_APPR_FILE_INFO"라는 프로시저를 통해 파일의 정보를 가져옵니다.
그리고 file_attach라는 byte배열 안의 파일 내용을 FileContentResult함수를 통해 변환시켜주고
다운받을 시 바일 이름을 무엇으로 할 것인 지 FileDownloadName 함수를 통해 지정해준 다음 리턴시켜줍니다.
이렇게 하면 데이터베이스에 있는 파일도 다운로드가 가능합니다!
'Web progamming' 카테고리의 다른 글
[Angular js][asp.net mvc] Angular js 사용법 (1) | 2016.12.16 |
---|---|
[asp.net mvc] Razor cookie와 session 값 가져오기 (0) | 2016.12.05 |
[JQuery] Select Box 제어 (0) | 2016.11.18 |
[DB][MSSQL][ASP.NET] Stored procedure 생성 및 예제 (0) | 2016.11.18 |
[asp.net][jquery] jquery에서 List 사용하는 방법 (0) | 2016.11.16 |