mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Fix for ALF-2216 - completed support for single and multi-byte range requests via the download content servlet.
- Supports single range, open start/ended single range and multipart/byteranges response type for multiple ranges - Supports merged sequential ranges for optimal transfer - Tested with IE+AdobeReader and FireFox+AdobeReader combination - which transmit any sequence and any number of multi-byte range requests for an embedded PDF document - various sizes and types of documents also tested git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19710 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -81,16 +81,16 @@ public class DownloadContentServlet extends BaseDownloadContentServlet
|
||||
return logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
|
||||
/* (non-Javadoc)
|
||||
* @see javax.servlet.http.HttpServlet#doHead(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
|
||||
*/
|
||||
protected void doGet(final HttpServletRequest req, final HttpServletResponse res)
|
||||
throws ServletException, IOException
|
||||
@Override
|
||||
protected void doHead(final HttpServletRequest req, final HttpServletResponse res) throws ServletException, IOException
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
String queryString = req.getQueryString();
|
||||
logger.debug("Authenticating request to URL: " + req.getRequestURI() +
|
||||
logger.debug("Authenticating (HEAD) request to URL: " + req.getRequestURI() +
|
||||
((queryString != null && queryString.length() > 0) ? ("?" + queryString) : ""));
|
||||
}
|
||||
|
||||
@@ -106,7 +106,39 @@ public class DownloadContentServlet extends BaseDownloadContentServlet
|
||||
{
|
||||
public Void execute() throws Throwable
|
||||
{
|
||||
processDownloadRequest(req, res, true);
|
||||
processDownloadRequest(req, res, true, false);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
transactionService.getRetryingTransactionHelper().doInTransaction(processCallback, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
|
||||
*/
|
||||
protected void doGet(final HttpServletRequest req, final HttpServletResponse res)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
String queryString = req.getQueryString();
|
||||
logger.debug("Authenticating (GET) request to URL: " + req.getRequestURI() +
|
||||
((queryString != null && queryString.length() > 0) ? ("?" + queryString) : ""));
|
||||
}
|
||||
|
||||
AuthenticationStatus status = servletAuthenticate(req, res);
|
||||
if (status == AuthenticationStatus.Failure)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ServiceRegistry serviceRegistry = getServiceRegistry(getServletContext());
|
||||
TransactionService transactionService = serviceRegistry.getTransactionService();
|
||||
RetryingTransactionCallback<Void> processCallback = new RetryingTransactionCallback<Void>()
|
||||
{
|
||||
public Void execute() throws Throwable
|
||||
{
|
||||
processDownloadRequest(req, res, true, true);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user