excel文件下载下来损坏 js_java – React excel文件下载损坏

在尝试使用React通过Spring REST端点下载Excel文件时遇到问题,文件下载后显示损坏。问题可能出在响应处理上。在React中,使用axios获取文件并创建Blob对象,然后使用filesaver库保存文件。而在Spring控制器中,设置了正确的Content-Type和Content-Disposition头,并将文件内容写入响应输出流。然而,下载的文件内容显示为乱码,导致Excel无法正常打开。在服务器上文件能够正常打开,说明问题可能在于文件传输过程中。
摘要由CSDN通过智能技术生成

我试图通过调用

Spring REST端点在Reactjs中下载Excel文件,但我遇到了损坏文件的问题.

反应电话……

getFile(){

axios.get('get/download')

.then((response) => {

var blob = new Blob([response.data], {type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});

filesaver.saveAs(blob, "excel.xlsx");

});

}

弹簧控制器……

@RequestMapping(value = "/download", method = RequestMethod.GET)

public void downloadExcelFile(final HttpServletResponse response) throws IOException {

response.setHeader("Content-Encoding", "UTF-8");

response.setHeader("Content-Disposition", "attachment; filename="file.xlsx");

response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

final File xls = service.createExcelFile(response);

final FileInputStream in = new FileInputStream(xls);

final OutputStream out = response.getOutputStream();

final byte[] buffer = new byte[8192];

int length;

while ((length = in.read(buffer)) > 0) {

out.write(buffer, 0, length);

}

in.close();

out.close();

}

服务…

public File createExcelFile(final HttpServletResponse response) {

XSSFWorkbook xssfWorkbook = null;

final File xls = new File("excel.xlsx");

try {

final FileOutputStream fos = new FileOutputStream(xls);

xssfWorkbook = new XSSFWorkbook();

//setup excel file...

xssfWorkbook.write(fos);

xssfWorkbook.close();

}

catch (final Exception e) {

LOGGER.error(String.format("Something went wrong"));

}

return xls;

}

当我执行上面的代码时,我得到一个excel文件o.k …但是看看response.data看起来像……

"PKs��J_rels/.rels���j�0��}↵�{㴃1F�^Ơ�2��l%1I,c�[�

打开我得到的文件…由于数据不可读而无法打开文件.在服务器上打开文件是可以的

欢迎任何想法

干杯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值