Я пытаюсь загрузить изображение с помощью веб-сервиса Джерси, я использую джерси-клиент для загрузки изображения. ниже - это веб-сервис jersey, который принимает входной поток и загружает изображение на сервер. она отлично работает, когда я непосредственно вызвать его, используя JSP многослойную форму загрузки, но не когда я загружать изображения с использованием Джерси клиентуJersey Загрузка изображения Клиент
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) throws ServiceException
{
// upload code
}
Ниже Клиент-Джерси, чтобы загрузить изображение, код клиента является частью другого веб-сервиса, который вызывается из php rest client и этот клиент jersey для того, чтобы загрузить веб-сервис, чтобы загрузить изображение, если я прямо звоню в веб-службу Джерси, чтобы загрузить изображение, которое работает нормально, но оно не работает, когда я загружаю с помощью джерси-клиента.
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.setChunkedEncodingSize(1024);
WebResource wr = client
.resource("http://localhost:8080/rest/upload");
String contentDisposition = "attachment; filename=\""
+ fileDetail.getName() + "\"";
FormDataMultiPart form = new FormDataMultiPart();
ContentDisposition contentDisposition2 = new ContentDisposition(contentDisposition);
form.setContentDisposition(contentDisposition2);
FormDataBodyPart fdp = new FormDataBodyPart("file",
uploadedInputStream, MediaType.MULTIPART_FORM_DATA_TYPE);
form.bodyPart(fdp);
ClientResponse response = wr.type(MediaType.MULTIPART_FORM_DATA).post(
ClientResponse.class, form)
Пожалуйста, помогите мне не знать, что мне не хватает здесь. Спасибо.
Можете ли вы уточнить, что «не работает» означает? Я тестировал ваш точный код, используя 'FileInputStream' для' uploadedInputStream', и он отлично работает. Одна вещь, которую я бы изменил (хотя это не вызвало у меня ошибки), является «MediaType.MULTIPART_FORM_DATA_TYPE' для' fdp' для 'MediaType.APPLICATION_OCTET_STREAM_TYPE' –
Я имею в виду, что он передает uploadedInputStream в jersey webservice, но он не содержит таких же куски и тот же тип контента, который мы передали от джерси-клиента. –
Форма данных - основной тип содержимого запроса. Но форма-данные поставляются с частями, и каждая часть имеет собственный тип контента. Файл должен быть октетом-потоком, а не форма-данными –