在liferay serveResource方法中下载压缩文件

问题描述

在 Liferay 7.2 中,我需要将一些文件放入 zip 并从 serveResource 方法下载 zip 文件。实际上我已经使用 zipwriter 将所有文件放入一个 zip 文件中,我可以在 tomcat/temp 文件夹中看到 zip 文件,但没有下载文件

                HttpServletRequest request = PortalUtil.getHttpServletRequest(resourceRequest);
                HttpServletResponse response = PortalUtil.getHttpServletResponse(resourceResponse);
                
                Zipwriter zipwriter = ZipwriterFactoryUtil.getZipwriter();
                resourceResponse.setProperty("Content-disposition","attachment; filename=myarchive.zip");

                if (!Validator.isBlank(fileIds)) {
                    for (String fileId : fileIdsArr) {
                        if (!Validator.isBlank(fileId) && !fileId.equals(OrderConstants.ZERO)) {
                            DLFileEntry dlFileEntry = DLFileEntryLocalServiceUtil
                                    .getDLFileEntry(Long.valueOf(fileId));
                            File file = DLFileEntryLocalServiceUtil.getFile(dlFileEntry.getFileEntryId(),dlFileEntry.getVersion(),true);

                            byte[] bytes = FileUtil.getBytes(file);
                            String fileName = dlFileEntry.getFileName();
                            zipwriter.addEntry(fileName,bytes);
                        }
                    }

                    byte[] archive = zipwriter.finish();
                    String contentType = MimeTypesUtil.getContentType("Documents.zip");

                    ServletResponseUtil.sendFile(request,response,"Documents.zip",archive,contentType); 

我尝试过其他方法,如 StreamUtil.transfer.. 但我收到了 java.io.IOException: An established connection was aborted by the software in your host machine 错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)