【发布时间】:2019-01-04 04:16:45
【问题描述】:
我正在尝试从 REST API 下载文件,我正在用 Java 编写代码并做出反应。但是当我调用那个rest api时,它并没有下载那个文件而是给了我一些垃圾
@POST
@Path("/{loginId}")
@Produces(MULTIPART_FORM_DATA)
@Consumes(APPLICATION_JSON)
public Response downloadExportedFile(@PathParam("loginId") String loginId, ExportFileDTO fileDetails) {
File exportFolder = new File("C://directory");
File[] listOfFiles = exportFolder.listFiles();
for (File listOfFile : listOfFiles) {
if (listOfFile.getName().equals(fileDetails.getFileName())) {
InputStream is = new FileInputStream(listOfFile.getAbsolutePath());
byte[] buffer = IOUtils.toByteArray(is);
return Response.ok(listOfFile)
.header("content-disposition", "attachment; filename=" + new File(listOfFile.getName()).getName())
.type(MediaType.APPLICATION_OCTET_STREAM_TYPE).build();
}
}
它应该下载文件而不是给我输出 PK!b�h^�[Content_Types].xml �(����N�0E�H�C�-J�@5��Q>�ēƪc[�ii����B�j7� ��{2��h�nm���ƻR����U^7/����%��rZY�@1__�f��q��R4D�AJ�h>����V� ƹ�Z�9����NV�8ʩ����ji){^��-I�"{�v^�P!XS)bR�r��K�s(�3�`c� 0��������7M4������ZƐk+�|\|z�(���P��6h_-[�@�!���Pk���2n�}�?�L ����%����d����dN"m,�ǞDO97�~��ɸ8�O�c|n���E������B��!$ }...... ~�I����$��'T�G�~����
【问题讨论】:
-
PK!b表示这是一个 ZIP 存档 -
不是 .xls 文件
-
我仔细检查了,发现
PK确实是一个Excel.xls文件。你在期待什么?如果您将该文件写入磁盘,它将可以使用 Excel 打开。你期待一些人类可读的东西吗? Excel 文件不是人类直接可读的。 -
我希望调用这个 api 后文件应该直接在客户端机器上下载