#java #spring #binary-data #aspose
#java #spring #двоичные данные #aspose
Вопрос:
Я пытаюсь создать конечную точку в Java API. Вызов должен будет передать файл word (который будет в байтах) для конечной точки. Затем мне нужно перевести эти байты в com.aspose.words.Документ, поэтому я применяю .getMailMerge().getFieldNames()
к нему.
По сути, я хочу создать конечную точку, которая будет принимать файл word, который находится в байтах [], и возвращает поля в этом документе word. Я застрял на той части, где я превращаю байты в файл.
Вот что у меня есть до сих пор:
@RequestMapping(value = "getFields", method = POST, produces = MediaType.APPLICATION_JSON_VALUE)
public Fields getFieldsFromFile(@RequestBody byte[] file, @RequestHeader(value = "Authorization") String apiKey) {
try {
return myService.getFieldsFromFile(file, apiKey);
} catch (Exception e) {
...handles error...
}
}
public Fields getFieldsFromFile(bytes[] file, String apiKey) throws ServiceException {
{THIS IS WHERE I NEED TO MAKE THE FILE VAR, WHICH IS CURRENTLY BYTES,
INTO A DOCUMENT(COM.ASPOSE.WORDS.DOCUMENT)}
try {
return new Fields(new HashSet<>(Arrays.asList(file.getMailMerge().getFieldNames())).toArray(new String[0]));
} catch (Exception e) {
...throws error...
}
}
Ответ №1:
Если ваши байты уже находятся в хорошем формате, как я вижу в документации здесь https://apireference.aspose.com/words/java/com.aspose.words/Document
есть конструктор Document(java.io.InputStreamstream)
Итак, вы можете использовать это :
public Fields getFieldsFromFile(bytes[] file, String apiKey) throws ServiceException {
Document doc = new Document(new ByteArrayInputStream(file));
try {
return new Fields(new HashSet<>(Arrays.asList(file.getMailMerge().getFieldNames())).toArray(new String[0]));
} catch (Exception e) {
...throws error...
}
}
Комментарии:
1. Да, это то, что мне было нужно. TY