티스토리 뷰

오늘의 포스팅은 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에서 이런 방법으로 파일을 서버 폴더에 저장할 수 있습니다!

이 서버 폴더 안에 있는 파일을 다운로드 하는 방법은 


이런 방법으로 사용하면 됩니다. 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 함수를 통해 지정해준 다음 리턴시켜줍니다.


이렇게 하면 데이터베이스에 있는 파일도 다운로드가 가능합니다! 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함