참고 : 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;
}
'백엔드 > C#' 카테고리의 다른 글
함수 선언문 윗줄에서 슬래시 세번누르면 자동 주석생성된다 (0) | 2018.09.20 |
---|---|
polylabel 라이브러리 번역 (0) | 2018.09.09 |
DateTime null 값일 때 MinDate로 자동으로 바뀌는 문제 (0) | 2018.09.03 |
이벤트 핸들러 만들때 주의할 점 (0) | 2018.08.27 |
CheckBoxList의 CheckedItemCollection을 List로 변환 (0) | 2018.08.24 |
댓글