Я хочу отправить POST
запрос на конечную точку отдыха. остальная конечная точка документация гласит:
Создайте узел и добавьте его в качестве основного дочернего элемента nodeId узла.
Эта конечная точка поддерживает как JSON, так и multipart / form-data (загрузка файла).
Использование multipart / form-data
Используйте поле filedata для представления содержимого для загрузки, например, следующая команда curl создаст узел с содержимое test.txt в домашней папке тестового пользователя.
curl -utest: test -X POST хост: порт / alfresco / api / -default- / public / alfresco / версии / 1 / узлы / - my- / children -F filedata=@test.txt
Вы можете использовать поле имени, чтобы задать альтернативное имя для нового файла.
Вы можете использовать поле nodeType, чтобы создать специфику c тип. Значение по умолчанию: cm: content
Мне удалось отправить правильный запрос на эту конечную точку с помощью следующего кода:
@Override
public ResponseEntity<byte[]> postNode(String nodeId, byte[] content) {
MultiValueMap<String, Object> bodyMap = new LinkedMultiValueMap<>();
ByteArrayResource contentsAsResource = new ByteArrayResource(content) {
@Override
public String getFilename() {
return "name22222";
}
};
bodyMap.add("filedata", contentsAsResource);
///bodyMap.add("filedata", content);// why this does not work??!
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(bodyMap, headers);
return restTemplate.exchange("/nodes/{nodeId}/children", HttpMethod.POST, requestEntity, byte[].class, nodeId);
}
, но у меня есть два вопроса:
1 - почему закомментированная строка не работает?
2 - в документах написано:
В поле имени можно указать альтернативное имя для нового файла.
Я не использовал поле "name"
, но сервер сохранил мои файлы с правильным именем (= "name22222"
), почему? (Я думал, multipart/form-data
- это некое простое имя - значение, если это правильно, то у меня есть поле с именем "filedata", и его значением является мой byte
содержимое массива, так как имя файла отправляется?). и как я могу указать имя файла с полем ?
: я думаю, что нашел свои ответы. мне просто нужно прочитать о multipart/form-data
!