http4s 라이브러리를 사용하여 멀티 파트 콘텐츠를 처리하는 방법을 알고 싶습니다.http4의 멀티 파트 콘텐츠 처리
Multipart Data
Parts:2
Some(birthDate), headers: Content-Disposition: form-data; name="birthDate"
Some(dataFile), headers: Content-Disposition: form-data; name="dataFile";
filename="file.pdf",Content-Type: application/pdf
: I는 서비스를 실행하고, 해당 필드를 채우는 경우
case GET -> Root/"form" =>
Ok(
"""|<html>
|<body>
|<form method="post" action="/post" enctype="multipart/form-data">
| <input type="date" name="birthDate" placeholder="birthDate">
| <input type="file" name="dataFile">
| <input type="submit">
|</form></body></html>""".stripMargin).
withContentType(Some(`Content-Type`(`text/html`)))
case req @ POST -> Root/"post" => {
req.decode[Multipart[IO]] { m =>
Ok(
s"""Multipart Data\nParts:${m.parts.length}
|${m.parts.map { case f: Part[IO] => { f.name + ", headers: " + f.headers.mkString(",")} }.mkString("\n")}""".stripMargin)
}
}
는, I는 다음과 같은 결과를 얻었다 :
다음 코드와 서비스 (완전한 요지 here이다) 상상
그래서 Part[IO]
유형의 요소이며 headers
및 body
을 포함하는 파트에 대한 정보를 얻는 방법을 알고 있습니다.
내가 원하는 것은 그 부분들을 어떻게 처리 하는지를 아는 것이다. 이 경우, 예를 들어 파일을 열고 그 길이를 알리고 싶습니다. 그 일을하는 관용적 인 방법은 무엇입니까?
이전 솔루션의 한 가지 문제점은 파일이 너무 클 때입니다. – Labra