본문 바로가기
백엔드/C#

DB에서 BLOB 파일 읽어서 로컬에 저장하기

by 1005ptr 2018. 9. 3.
반응형

참고 : https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-programming-blob-reading.html


지금하고있는 프로젝트에서 기존에는 프로젝트 특정 경로 상에 있는 파일을 읽어서 사용했는데

이번에 DB에서 파일을 읽어오도록 변경됐다.


목적 : 기존 로직은 파일 경로(filePath)로 파일을 찾아서 태운다. DB에서 가져오면서 기존 로직을 태우는게 목적.


방법 : DB에서 가져오면 byte[] 형태로 직접 들고있으므로 filePath란게 없다. File을 만들고 그 경로를 전달하자.


0. C#에서 BLOB 데이터를 받아올 때는 byte[]를 사용하면 된다. (받아오는건 iBatis 사용)

1. 받아온 byte[] 데이터를 다시 파일로 저장한다.

2. 저장한 경로를 기존 로직에 전달한다.


LoadData(item)

 - Item item : 그리드에서 선택된 아이템

 - result : item으로 가져온 파일 데이터(BLOB)

 - SaveFile : 불러온 파일을 저장하고 저장한 경로를 반환한다.

 - LoadData : 기존 로직을 태운다. ( 이름이 같아도 전혀 다른 메서드. 생략한다고 이름이 같아졌다)

        public bool LoadData(Item item)

        {

            List<Item> result = SelectFileData(item); // DB호출

            if (result.Count == 0)

                return false;            // TODO


            string filePath = this.SaveFile(result[0]);

            LoadData(filePath, item);


            return true;

        }


SaveFile(item)

        private string SaveFile(Item item)

        {

            string filePath = "";

            string fileDir = Application.StartupPath + @"저장할 경로";


            filePath = fileDir + item.FileName;

            FileStream fs;

            fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);

            fs.Write(item.FileContents, 0, item.FileContents.Length);

            fs.Close();


            return filePath;

        }




반응형

댓글