Example usage for com.liferay.portal.kernel.servlet ServletResponseUtil sendFile

List of usage examples for com.liferay.portal.kernel.servlet ServletResponseUtil sendFile

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.servlet ServletResponseUtil sendFile.

Prototype

public static void sendFile(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
            String fileName, InputStream inputStream, long contentLength, String contentType) throws IOException 

Source Link

Usage

From source file:com.liferay.document.library.web.internal.portlet.action.GetFileActionHelper.java

License:Open Source License

protected void getFile(long fileEntryId, long folderId, String name, String title, String version,
        long fileShortcutId, String uuid, long groupId, String targetExtension, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    if (name.startsWith("DLFE-")) {
        name = name.substring(5);//  w  w w .java  2 s  . c o m
    }

    name = FileUtil.stripExtension(name);

    FileEntry fileEntry = null;

    if (Validator.isNotNull(uuid) && (groupId > 0)) {
        fileEntry = DLAppServiceUtil.getFileEntryByUuidAndGroupId(uuid, groupId);

        folderId = fileEntry.getFolderId();
    }

    if (fileEntryId > 0) {
        fileEntry = DLAppServiceUtil.getFileEntry(fileEntryId);
    } else if (fileShortcutId <= 0) {
        if (Validator.isNotNull(title)) {
            fileEntry = DLAppServiceUtil.getFileEntry(groupId, folderId, title);
        } else if (Validator.isNotNull(name)) {
            DLFileEntry dlFileEntry = DLFileEntryLocalServiceUtil.fetchFileEntryByName(groupId, folderId, name);

            if (dlFileEntry == null) {

                // LPS-30374

                List<DLFileEntry> dlFileEntries = DLFileEntryLocalServiceUtil.getFileEntries(folderId, name);

                if (!dlFileEntries.isEmpty()) {
                    dlFileEntry = dlFileEntries.get(0);
                }
            }

            if (dlFileEntry != null) {
                ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

                PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

                DLFileEntryPermission.check(permissionChecker, dlFileEntry, ActionKeys.VIEW);

                fileEntry = new LiferayFileEntry(dlFileEntry);
            }
        }
    } else {
        FileShortcut fileShortcut = DLAppServiceUtil.getFileShortcut(fileShortcutId);

        fileEntryId = fileShortcut.getToFileEntryId();

        fileEntry = DLAppServiceUtil.getFileEntry(fileEntryId);
    }

    if (Validator.isNull(version)) {
        if ((fileEntry != null) && Validator.isNotNull(fileEntry.getVersion())) {

            version = fileEntry.getVersion();
        } else {
            throw new NoSuchFileEntryException("{fileEntryId=" + fileEntryId + "}");
        }
    }

    FileVersion fileVersion = fileEntry.getFileVersion(version);

    InputStream is = fileVersion.getContentStream(true);

    String fileName = fileVersion.getTitle();

    String sourceExtension = fileVersion.getExtension();

    if (Validator.isNotNull(sourceExtension) && !fileName.endsWith(StringPool.PERIOD + sourceExtension)) {

        fileName += StringPool.PERIOD + sourceExtension;
    }

    long contentLength = fileVersion.getSize();
    String contentType = fileVersion.getMimeType();

    if (Validator.isNotNull(targetExtension)) {
        String id = DLUtil.getTempFileId(fileEntry.getFileEntryId(), version);

        File convertedFile = DocumentConversionUtil.convert(id, is, sourceExtension, targetExtension);

        if (convertedFile != null) {
            fileName = FileUtil.stripExtension(fileName).concat(StringPool.PERIOD).concat(targetExtension);
            is = new FileInputStream(convertedFile);
            contentLength = convertedFile.length();
            contentType = MimeTypesUtil.getContentType(fileName);
        }
    }

    FlashMagicBytesUtil.Result flashMagicBytesUtilResult = FlashMagicBytesUtil.check(is);

    if (flashMagicBytesUtilResult.isFlash()) {
        fileName = FileUtil.stripExtension(fileName) + ".swf";
    }

    is = flashMagicBytesUtilResult.getInputStream();

    ServletResponseUtil.sendFile(request, response, fileName, is, contentLength, contentType);
}

From source file:com.liferay.httpservice.servlet.ResourceServlet.java

License:Open Source License

@Override
public void service(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {

    try {/*from w  ww.  j  av  a  2 s. co m*/
        String requestURI = getRequestURI(request);

        int aliasIndex = requestURI.indexOf(_alias);

        if (aliasIndex == 0) {
            requestURI = requestURI.substring(_alias.length());
        }

        if (Validator.isNotNull(_name)) {
            requestURI = _name.concat(requestURI);
        }

        URL url = _httpContext.getResource(requestURI);

        if (url == null) {
            response.setStatus(HttpServletResponse.SC_NOT_FOUND);

            return;
        }

        URLConnection urlConnection = url.openConnection();

        long lastModified = urlConnection.getLastModified();

        if (lastModified > 0) {
            long ifModifiedSince = request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE);

            if ((ifModifiedSince > 0) && (ifModifiedSince == lastModified)) {

                response.setContentLength(0);

                response.setDateHeader(HttpHeaders.LAST_MODIFIED, lastModified);

                String ifNoneMatch = request.getHeader(HttpHeaders.IF_NONE_MATCH);

                if (Validator.isNotNull(ifNoneMatch) && !ifNoneMatch.equals('0')) {

                    response.setHeader(HttpHeaders.ETAG, ifNoneMatch);
                }

                response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);

                return;
            }
        }

        if (lastModified > 0) {
            response.setDateHeader(HttpHeaders.LAST_MODIFIED, lastModified);
        }

        String fileName = getRequestURI(request);

        int slashIndex = fileName.lastIndexOf(StringPool.SLASH);

        if (slashIndex != -1) {
            fileName = fileName.substring(slashIndex + 1);
        }

        String contentType = _httpContext.getMimeType(fileName);

        if (isSupportsRangeHeader(contentType)) {
            sendFileWithRangeHeader(request, response, fileName, urlConnection.getInputStream(),
                    urlConnection.getContentLength(), contentType);
        } else {
            ServletResponseUtil.sendFile(request, response, fileName, urlConnection.getInputStream(),
                    urlConnection.getContentLength(), contentType);
        }
    } catch (Exception e) {
        PortalUtil.sendError(HttpServletResponse.SC_NOT_FOUND, e, request, response);
    }
}

From source file:com.liferay.portlet.documentlibrary.action.GetFileAction.java

License:Open Source License

protected void getFile(long fileEntryId, long folderId, String title, String version, long fileShortcutId,
        String uuid, long groupId, String targetExtension, ThemeDisplay themeDisplay,
        HttpServletRequest request, HttpServletResponse response) throws Exception {

    FileEntry fileEntry = null;/*  w  w  w.  ja  va  2  s.c  o  m*/

    if (Validator.isNotNull(uuid) && (groupId > 0)) {
        fileEntry = DLAppServiceUtil.getFileEntryByUuidAndGroupId(uuid, groupId);

        folderId = fileEntry.getFolderId();
    }

    if (fileEntryId > 0) {
        fileEntry = DLAppServiceUtil.getFileEntry(fileEntryId);
    } else if (fileShortcutId <= 0) {
        if (Validator.isNotNull(title)) {
            fileEntry = DLAppServiceUtil.getFileEntry(groupId, folderId, title);
        }
    } else {
        DLFileShortcut fileShortcut = DLAppServiceUtil.getFileShortcut(fileShortcutId);

        fileEntryId = fileShortcut.getToFileEntryId();

        fileEntry = DLAppServiceUtil.getFileEntry(fileEntryId);
    }

    if (Validator.isNull(version)) {
        if (Validator.isNotNull(fileEntry.getVersion())) {
            version = fileEntry.getVersion();
        } else {
            throw new NoSuchFileEntryException();
        }
    }

    FileVersion fileVersion = fileEntry.getFileVersion(version);

    InputStream is = fileVersion.getContentStream(true);
    String fileName = fileVersion.getTitle();
    long contentLength = fileVersion.getSize();
    String contentType = fileVersion.getMimeType();

    if (Validator.isNotNull(targetExtension)) {
        String id = DLUtil.getTempFileId(fileEntry.getFileEntryId(), version);

        String sourceExtension = fileVersion.getExtension();

        if (!fileName.endsWith(StringPool.PERIOD + sourceExtension)) {
            fileName += StringPool.PERIOD + sourceExtension;
        }

        File convertedFile = DocumentConversionUtil.convert(id, is, sourceExtension, targetExtension);

        if (convertedFile != null) {
            fileName = FileUtil.stripExtension(fileName).concat(StringPool.PERIOD).concat(targetExtension);
            is = new FileInputStream(convertedFile);
            contentLength = convertedFile.length();
            contentType = MimeTypesUtil.getContentType(fileName);
        }
    }

    ServletResponseUtil.sendFile(request, response, fileName, is, contentLength, contentType);
}

From source file:com.liferay.portlet.dynamicdatalists.util.DDLImpl.java

License:Open Source License

public void sendRecordFileUpload(HttpServletRequest request, HttpServletResponse response, DDLRecord record,
        String fieldName) throws Exception {

    Serializable fieldValue = record.getFieldValue(fieldName);

    JSONObject fileJSONObject = JSONFactoryUtil.createJSONObject(String.valueOf(fieldValue));

    String fileName = fileJSONObject.getString("name");
    String filePath = fileJSONObject.getString("path");

    InputStream is = DLStoreUtil.getFileAsStream(record.getCompanyId(), CompanyConstants.SYSTEM, filePath);
    long contentLength = DLStoreUtil.getFileSize(record.getCompanyId(), CompanyConstants.SYSTEM, filePath);
    String contentType = MimeTypesUtil.getContentType(fileName);

    ServletResponseUtil.sendFile(request, response, fileName, is, contentLength, contentType);
}

From source file:com.liferay.portlet.messageboards.action.GetMessageAttachmentAction.java

License:Open Source License

protected void getFile(long messageId, String fileName, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    MBMessage message = MBMessageServiceUtil.getMessage(messageId);

    String path = message.getAttachmentsDir() + "/" + fileName;

    InputStream is = DLStoreUtil.getFileAsStream(message.getCompanyId(), CompanyConstants.SYSTEM, path);
    long contentLength = DLStoreUtil.getFileSize(message.getCompanyId(), CompanyConstants.SYSTEM, path);
    String contentType = MimeTypesUtil.getContentType(fileName);

    ServletResponseUtil.sendFile(request, response, fileName, is, contentLength, contentType);
}

From source file:com.liferay.portlet.wiki.action.GetPageAttachmentAction.java

License:Open Source License

protected void getFile(long nodeId, String title, String fileName, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    int pos = fileName.indexOf(CharPool.SLASH);

    if (pos != -1) {
        title = fileName.substring(0, pos);
        fileName = fileName.substring(pos + 1);
    }/* w w  w  .j  ava 2 s  . c o  m*/

    WikiPage page = WikiPageServiceUtil.getPage(nodeId, title);

    String path = page.getAttachmentsDir() + "/" + fileName;

    InputStream is = DLStoreUtil.getFileAsStream(page.getCompanyId(), CompanyConstants.SYSTEM, path);
    long contentLength = DLStoreUtil.getFileSize(page.getCompanyId(), CompanyConstants.SYSTEM, path);
    String contentType = MimeTypesUtil.getContentType(fileName);

    ServletResponseUtil.sendFile(request, response, fileName, is, contentLength, contentType);
}

From source file:com.liferay.wiki.web.internal.portlet.action.GetPageAttachmentAction.java

License:Open Source License

protected void getFile(long nodeId, String title, String fileName, int status, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    WikiPage wikiPage = _wikiPageService.getPage(nodeId, title);

    FileEntry fileEntry = PortletFileRepositoryUtil.getPortletFileEntry(wikiPage.getGroupId(),
            wikiPage.getAttachmentsFolderId(), fileName);

    if ((status != WorkflowConstants.STATUS_IN_TRASH) && fileEntry.isInTrash()) {

        return;/*from   w  w w  . ja  v  a 2s.c  om*/
    }

    if (fileEntry.isInTrash()) {
        fileName = TrashUtil.getOriginalTitle(fileEntry.getTitle());
    }

    InputStream is = fileEntry.getContentStream();

    FlashMagicBytesUtil.Result flashMagicBytesUtilResult = FlashMagicBytesUtil.check(is);

    if (flashMagicBytesUtilResult.isFlash()) {
        fileName = FileUtil.stripExtension(fileName) + ".swf";
    }

    is = flashMagicBytesUtilResult.getInputStream();

    ServletResponseUtil.sendFile(request, response, fileName, is, fileEntry.getSize(), fileEntry.getMimeType());
}

From source file:it.smc.calendar.sync.caldav.methods.GetMethodImpl.java

License:Open Source License

@Override
public int process(WebDAVRequest webDAVRequest) throws WebDAVException {
    InputStream is = null;/*from  w w w.  j  av  a  2  s  .c  om*/

    try {
        WebDAVStorage storage = webDAVRequest.getWebDAVStorage();
        HttpServletRequest request = webDAVRequest.getHttpServletRequest();
        HttpServletResponse response = webDAVRequest.getHttpServletResponse();

        Resource resource = storage.getResource(webDAVRequest);

        if (resource == null) {
            return HttpServletResponse.SC_NOT_FOUND;
        }

        try {
            is = resource.getContentAsStream();
        } catch (Exception e) {
            if (_log.isErrorEnabled()) {
                _log.error(e.getMessage());
            }
        }

        if (is != null) {
            try {
                ServletResponseUtil.sendFile(request, response, resource.getDisplayName(), is,
                        resource.getSize(), resource.getContentType());
            } catch (Exception e) {
                if (_log.isWarnEnabled()) {
                    _log.warn(e);
                }
            }

            return HttpServletResponse.SC_OK;
        }

        return HttpServletResponse.SC_NOT_FOUND;
    } catch (ResourceNotFoundException rnfe) {
        return HttpServletResponse.SC_NOT_FOUND;
    } catch (WebDAVException pe) {
        if (pe.getCause() instanceof PrincipalException) {
            return HttpServletResponse.SC_UNAUTHORIZED;
        } else if (pe.getCause() instanceof ResourceNotFoundException) {
            return HttpServletResponse.SC_NOT_FOUND;
        }

        throw pe;
    } catch (Exception e) {
        throw new WebDAVException(e);
    }
}