Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring中下载文件的编码_Spring_Spring Mvc - Fatal编程技术网

Spring中下载文件的编码

Spring中下载文件的编码,spring,spring-mvc,Spring,Spring Mvc,我想创建一个控制器,它将向客户端发送一个CSV文件,我创建了下一个控制器: @ResponseStatus(value = HttpStatus.OK) @RequestMapping(value = "/csv", method = RequestMethod.GET) public ResponseEntity downloadCsvAllInvoiceTransactionsByFilter( @PageableDefault(direction = DESC, sort

我想创建一个控制器,它将向客户端发送一个CSV文件,我创建了下一个控制器:

@ResponseStatus(value = HttpStatus.OK)
@RequestMapping(value = "/csv", method = RequestMethod.GET)
public ResponseEntity downloadCsvAllInvoiceTransactionsByFilter(
        @PageableDefault(direction = DESC, sort = "invoiceDate", size = 30) Pageable pageRequest) throws IOException {
    String someVariable = "Some text";
    byte[] out = someVariable.getBytes(Charset.forName("UTF-8"));
    HttpHeaders responseHeaders = new HttpHeaders();
    LOGGER.info(new String(out));
    responseHeaders.add("content-disposition", "attachment; filename=transactions.csv" );
    responseHeaders.add("Content-Type","text/csv; charset=utf-8");
    return new ResponseEntity<>(out,responseHeaders,HttpStatus.OK);
}
@ResponseStatus(值=HttpStatus.OK)
@RequestMapping(value=“/csv”,method=RequestMethod.GET)
公共响应下载CSVallinVoiceTransactionsByFilter(
@PageableDefault(direction=DESC,sort=“invoiceDate”,size=30)可分页请求)引发IOException{
String someVariable=“Some text”;
byte[]out=someVariable.getBytes(Charset.forName(“UTF-8”);
HttpHeaders responseHeaders=新的HttpHeaders();
LOGGER.info(新字符串(out));
add(“内容处置”、“附件;文件名=transactions.csv”);
添加(“内容类型”,“文本/csv;字符集=utf-8”);
返回新的ResponseEntity(out,responseHeaders,HttpStatus.OK);
}
记录器正在显示正确的字符串:

一些文本

但在下载的文件中还有另一个

U29tZSB0ZXh0


如何解决此问题?

响应主体在发送前通过消息转换器。特定转换器的选择取决于主体类以及响应和请求头

我试图用你的代码片段重现这个问题,并在csv文件中得到了预期的文本。所以我假设您注册了一个消息转换器,它按照您观察的方式转换字节数组

您可以调试
AbstractMessageConverterMethodProcessor#writeWithMessageConverters
并查看选择了哪个转换器以及原因