List of usage examples for com.liferay.portal.kernel.portlet PortletResponseUtil sendFile
public static void sendFile(PortletRequest portletRequest, MimeResponse mimeResponse, String fileName, InputStream inputStream, int contentLength, String contentType, String contentDispositionType) throws IOException
From source file:com.liferay.document.library.web.internal.portlet.action.DownloadEntriesMVCResourceCommand.java
License:Open Source License
protected void downloadFileEntries(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws Exception { ThemeDisplay themeDisplay = (ThemeDisplay) resourceRequest.getAttribute(WebKeys.THEME_DISPLAY); long folderId = ParamUtil.getLong(resourceRequest, "folderId"); File file = null;//from www . jav a2s . c om InputStream inputStream = null; try { List<FileEntry> fileEntries = ActionUtil.getFileEntries(resourceRequest); List<FileShortcut> fileShortcuts = ActionUtil.getFileShortcuts(resourceRequest); List<Folder> folders = ActionUtil.getFolders(resourceRequest); if (fileEntries.isEmpty() && fileShortcuts.isEmpty() && folders.isEmpty()) { return; } else if ((fileEntries.size() == 1) && fileShortcuts.isEmpty() && folders.isEmpty()) { FileEntry fileEntry = fileEntries.get(0); PortletResponseUtil.sendFile(resourceRequest, resourceResponse, fileEntry.getFileName(), fileEntry.getContentStream(), 0, fileEntry.getMimeType(), HttpHeaders.CONTENT_DISPOSITION_ATTACHMENT); } else if ((fileShortcuts.size() == 1) && fileEntries.isEmpty() && folders.isEmpty()) { FileShortcut fileShortcut = fileShortcuts.get(0); FileEntry fileEntry = _dlAppService.getFileEntry(fileShortcut.getToFileEntryId()); PortletResponseUtil.sendFile(resourceRequest, resourceResponse, fileEntry.getFileName(), fileEntry.getContentStream(), 0, fileEntry.getMimeType(), HttpHeaders.CONTENT_DISPOSITION_ATTACHMENT); } else { String zipFileName = getZipFileName(folderId, themeDisplay); ZipWriter zipWriter = ZipWriterFactoryUtil.getZipWriter(); for (FileEntry fileEntry : fileEntries) { zipFileEntry(fileEntry, StringPool.SLASH, zipWriter); } for (FileShortcut fileShortcut : fileShortcuts) { FileEntry fileEntry = _dlAppService.getFileEntry(fileShortcut.getToFileEntryId()); zipFileEntry(fileEntry, StringPool.SLASH, zipWriter); } for (Folder folder : folders) { zipFolder(folder.getRepositoryId(), folder.getFolderId(), StringPool.SLASH.concat(folder.getName()), zipWriter); } file = zipWriter.getFile(); inputStream = new FileInputStream(file); PortletResponseUtil.sendFile(resourceRequest, resourceResponse, zipFileName, inputStream, ContentTypes.APPLICATION_ZIP); } } finally { StreamUtil.cleanUp(inputStream); if (file != null) { file.delete(); } } }
From source file:com.liferay.marketplace.store.web.internal.portlet.RemoteMVCPortlet.java
License:Open Source License
protected void remoteServeResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws Exception { ThemeDisplay themeDisplay = (ThemeDisplay) resourceRequest.getAttribute(WebKeys.THEME_DISPLAY); OAuthRequest oAuthRequest = new OAuthRequest(Verb.GET, getServerPortletURL()); setRequestParameters(resourceRequest, resourceResponse, oAuthRequest); addOAuthParameter(oAuthRequest, "p_p_lifecycle", "2"); addOAuthParameter(oAuthRequest, "p_p_resource_id", resourceRequest.getResourceID()); Response response = getResponse(themeDisplay.getUser(), oAuthRequest); String contentType = response.getHeader(HttpHeaders.CONTENT_TYPE); if (contentType.startsWith(ContentTypes.APPLICATION_OCTET_STREAM)) { String contentDisposition = response.getHeader(HttpHeaders.CONTENT_DISPOSITION); int contentLength = GetterUtil.getInteger(response.getHeader(HttpHeaders.CONTENT_LENGTH)); PortletResponseUtil.sendFile(resourceRequest, resourceResponse, getFileName(contentDisposition), response.getStream(), contentLength, contentType, HttpHeaders.CONTENT_DISPOSITION_ATTACHMENT); } else {/*from ww w . j a v a 2 s .co m*/ resourceResponse.setContentType(contentType); PortletResponseUtil.write(resourceResponse, response.getStream()); } }