Я пытаюсь отправить файлы как составные данные форм в предварительном сценарии Почтальона:
function upload()
{
return new Promise((resolve, reject) =>{
pm.sendRequest({
url : url_service,
method : httpPOST,
header : {"Content-Type": "multipart/form-data"},
body: {
"mode": "formdata",
"formdata": [
{
"key": "file[]",
"value": fileContent,
"type": "file"
}
]
}
},
(e,r)=>
{
if (e)
{
console.log(e);
reject(e);
}
else
{
console.log(r);
resolve();
}
});
});
}
На стороне сервера (Spring Boot) код, который анализирует запрос:
public ObjectNode parseRequestBody(ServletRequest request) throws Exception {
HttpServletRequest req = (HttpServletRequest) request;
String body = null;
ObjectNode b = new ObjectNode(JsonNodeFactory.instance);
String cert = req.getHeader(conf.getApacheCertField());
if (this.mResolver.isMultipart(req)) {
MultipartHttpServletRequest mreq = this.mResolver.resolveMultipart(req);
List<MultipartFile> files = mreq.getFiles("file[]");
ArrayNode f = mapper.createArrayNode();
for (MultipartFile e : files) {
ObjectNode n = this.mapper.createObjectNode();
n.put("content", new String(Base64.getEncoder().encode(e.getBytes())));
n.put("name", e.getOriginalFilename());
n.put("mime", e.getContentType());
n.put("extension", e.getOriginalFilename().substring(e.getOriginalFilename().lastIndexOf(".") + 1));
f.add(n);
}
b.set("files", f);
} else {
body = this.readRequest(request);
b = body.isEmpty() ? new ObjectNode(JsonNodeFactory.instance) : mapper.readValue(body, ObjectNode.class);
if (cert != null)
b.put(conf.getCertField(), cert);
}
return b;
}
Когда внутренний код обрабатывает запрос, список файлов всегда пуст. Открытый код работает, когда запрос делает пользовательский интерфейс Angular 2. Можно ли сделать запрос multipart / formdata для загрузки файлов с использованием сценариев Postman?
Спасибо.