Прежде всего, вы хотите получить изображение как InputStream
, потому что оно может быть довольно большим. (У меня есть цифровая камера, которая выдает 12-мегапиксельное изображение. Это не последняя модель. Производимые ею изображения имеют размер несколько мегабайт, даже если они хранятся в формате JPEG. Вы не хотите, чтобы такие данные загромождали память больше, чем необходимо.)
Во-вторых, вы можете заставить свой веб-сервис принимать необработанные незакодированные данные в качестве загрузки. Это на самом деле проще, чем принимать данные в кодировке Base-64 (при условии, что вы извлекаете их как поток), и это хорошая экономия пропускной способности и обработки системы. Если вы хотите отправить другие данные одновременно, вам следует рассмотреть возможность работы с многокомпонентным контентом. (Увы, у меня нет опыта работы с этой частью; она мне не нужна для веб-сервисов RESTful, над которыми я работал.)
В-третьих, изображения следует описать как тип контента в пространстве image/*
, но на практике дважды проверьте, действительно ли это то, что вы действительно получаете. При отправке их обратно клиентам вы должны отправить его обратно как один из набора image/*
.