end_of_file if the
multipart boundary is encountered. The stream can be reset to
read the next part using multipart_open_next/1. Options:
All parts of a multipart input can be read using the following skeleton:
process_multipart(Stream) :-
multipart_open(Stream, DataStream, [boundary(...)]),
process_parts(DataStream).
process_parts(DataStream) :-
process_part(DataStream),
( multipart_open_next(DataStream)
-> process_parts(DataStream)
; close(DataStream)
).