RestAPI
[RestAPI/C#] Multipart/form-data POST 방식 수신 데이터 파싱
달콩쨩
2022. 5. 4. 17:59
POST 방식으로 보내진 Multipart/form-data Body를 가져오는 방법은 이전 발행 글에 있다.
2022.05.04 - [RestAPI] - [RestAPI/C#] Multipart/form-data POST 방식 수신
[RestAPI/C#] Multipart/form-data POST 방식 수신
HTTPListener를 통해 POST 로 전송되는 Multiform-data Body 수신 및 얻어오기 * Method : POST * Content Type : Multipart/form-data 1. 참조 추가 using System.Net; using System.Net.Http; 2. HttpListener..
dalkongzzang.tistory.com
위와 같은 방식으로 가져온 데이터를 값 별로 파싱하기 (HttpMultipartParser 이용)
1. C# 프로젝트(.Net Framework 4.7.2) 생성
2. 솔루션 탐색기 > 프로젝트 > 우클릭 > Nuget 패키지 관리
3. 찾아보기 탭 > 'HttpMultipartParser' 검색 > (만약 결과가 안나온다면 우측 상단에 패키지 소스가 모두로 되어있는지 확인) > 설치
4. HttpMultipartParser 참조
using HttpMultipartParser;
5. parser 선언
var parser = MultipartFormDataParser.Parse(stream); //stream: Request Body (stream형식)
6. parser를 이용해 값 가져오기
var name_value = parser.GetParameterValue("Name");
7. parser를 이용해 ImageFile 가져오기
//Image Parse
int nCnt = parser.Files.Count; //파싱할 파일의 개수
byte[] arrByte;
if (nCnt > 0) //파싱할 파일의 개수가 0보다 크면,
{
var file = parser.Files.First();
string filename = file.FileName;
Stream data = file.Data; //stream 형식으로 읽기
arrByte = streamToByteArray(data); //Byte Array로 변환
}
** 참고 **
Stream 을 ByteArray로 변환하는 함수
public static byte[] streamToByteArray(Stream input)
{
MemoryStream ms = new MemoryStream();
input.CopyTo(ms);
return ms.ToArray();
}