Как я могу реализовать функцию загрузки файлов через O CC? - PullRequest
0 голосов
/ 03 февраля 2020

Мне нужен API, который позволит мне загрузить (например, файл CSV). Я пытался сделать что-то вроде этого:

@RequestMapping(value="/{cartId}/export", method = RequestMethod.GET, produces = { "application/octet-stream" })
@ApiOperation(hidden = false, value = "Exports the contents of a cart as a CSV file.", notes = "Exports the contents of a cart as a CSV file.")
@ApiBaseSiteIdUserIdAndCartIdParam
public @ResponseBody ResponseEntity export() {

    File file = new File("test.csv");

    return ResponseEntity.ok()
            .header("Content-Disposition", "attachment; filename=" + "test" + ".csv")
            .contentLength(file.length())
            .contentType(MediaType.parseMediaType("application/octet-stream"))
            .body(new FileSystemResource(file));
}

Тем не менее, я получил бы ошибки, подобные этой:

0203_17: 48: 01,878 INFO [hybrisHTTP21] [de.hybris.platform .webservicescommons.resolver.RestHandlerExceptionResolver.doResolveException: 73] Перевод исключения [org.springframework.web.HttpMediaTypeNotAcceptableException]: невозможно найти приемлемое представление writeWithMessageConverters: 72] Не удалось найти HttpMessageConverter, поддерживающий тип возвращаемого значения [class de.hybris.platform.webservicescommons.dto.error.ErrorListWsDTO] и [application / octet-stream] 0203_17: 48: 01,879 WARN [hybrisraft. 21]. web.servlet.handler.AbstractHandlerExceptionResolver.logException: 197] Разрешено [org.springframework.web.HttpMediaTypeNotAcceptableException: Не удалось найти приемлемое представление]

Я понимаю, это потому, что весна mvc -se rvlet. xml имеет только resolverXStreamJSONConverter и resolverXStreamXmlConverter.

Если бы я делал это способом MVC, я записал бы файл в HttpServletResponse, но это не кажется идеальным для O * 1018. *. Итак, как мне осуществить загрузку файла? (Пример кода также приветствуется)

ПРИМЕЧАНИЕ: API / метод будет использоваться с витриной магазина "Спартак".

1 Ответ

0 голосов
/ 04 февраля 2020

Обходной путь - добавить org.springframework.http.converter.ResourceHttpMessageConverter в messageConvertersV2 в web / webroot / WEB-INF / config / v2 / jaxb-convertters-spring. xml:

<util:list id="messageConvertersV2">
    <bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>
    <ref bean="customJsonHttpMessageConverter"/>
    <ref bean="customXmlHttpMessageConverter"/>
</util:list>

Однако, не уверен, что это правильно или хорошая идея.

...