无法从网络服务下载 xlsx
Unable to download xlsx from web service
我正在尝试从基于 RESTEasy 的 Web 服务下载使用 Apache XSSF 生成的 xlsx 文件。
我可以下载文件但是双击打开时提示文件无法打开end:
下面是源代码:
Web 服务控制器:
@GET
@Path(/download)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response downloadFile() {
ByteArrayOutputStream baos = myService.processGbiValidationExceptions();
ResponseBuilder response = Response.ok((Object) baos.toByteArray());
response.header("Content-Disposition", "attachment;filename=My_File.xlsx");
return response.build();
}
服务:
public ByteArrayOutputStream processGbiValidationExceptions() {
XSSFWorkbook workbook = new XSSFWorkbook();
// code to write to workbook
// Create stream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
workbook.write(baos);
} catch (IOException e) {
LOGGER.error("Error occurred while writing workbook to stream", e);
throw new IptException(e);
}
return baos;
}
有什么线索表明我在这里做错了吗?谢谢
P.S.: 我在 Mac!
我之前用来下载文件的客户端代码几乎没有问题。现在,我正在使用 download.js 并且它有效。
代码如下:
import download from 'downloadjs';
.
.
.
fetch(FETCH_URL, {
method: 'GET',
dataType: 'json',
credentials: 'include'
}).then(response => {
if(response.status === 200) {
return response.blob();
}
}, () => {
// when error do something
}
).then(
// Following line helps download
blob => download(blob, "someexcel.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
)
此外,需要将 MIME 类型设置为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
才能下载 xlsx
文件:
@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
干杯
我正在尝试从基于 RESTEasy 的 Web 服务下载使用 Apache XSSF 生成的 xlsx 文件。
我可以下载文件但是双击打开时提示文件无法打开end:
下面是源代码:
Web 服务控制器:
@GET
@Path(/download)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response downloadFile() {
ByteArrayOutputStream baos = myService.processGbiValidationExceptions();
ResponseBuilder response = Response.ok((Object) baos.toByteArray());
response.header("Content-Disposition", "attachment;filename=My_File.xlsx");
return response.build();
}
服务:
public ByteArrayOutputStream processGbiValidationExceptions() {
XSSFWorkbook workbook = new XSSFWorkbook();
// code to write to workbook
// Create stream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
workbook.write(baos);
} catch (IOException e) {
LOGGER.error("Error occurred while writing workbook to stream", e);
throw new IptException(e);
}
return baos;
}
有什么线索表明我在这里做错了吗?谢谢
P.S.: 我在 Mac!
我之前用来下载文件的客户端代码几乎没有问题。现在,我正在使用 download.js 并且它有效。
代码如下:
import download from 'downloadjs';
.
.
.
fetch(FETCH_URL, {
method: 'GET',
dataType: 'json',
credentials: 'include'
}).then(response => {
if(response.status === 200) {
return response.blob();
}
}, () => {
// when error do something
}
).then(
// Following line helps download
blob => download(blob, "someexcel.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
)
此外,需要将 MIME 类型设置为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
才能下载 xlsx
文件:
@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
干杯