diff --git a/source/java/org/alfresco/repo/web/scripts/content/ContentInfo.java b/source/java/org/alfresco/repo/web/scripts/content/ContentInfo.java index e411545809..88cddf63aa 100644 --- a/source/java/org/alfresco/repo/web/scripts/content/ContentInfo.java +++ b/source/java/org/alfresco/repo/web/scripts/content/ContentInfo.java @@ -46,7 +46,7 @@ public class ContentInfo extends StreamContent { private ReferenceFactory referenceFactory; - + public void setReferenceFactory(ReferenceFactory referenceFactory) { this.referenceFactory = referenceFactory; @@ -79,7 +79,7 @@ public class ContentInfo extends StreamContent boolean attach, Date modified, String eTag, String attachFileName) throws IOException { - setAttachment(res, attach, attachFileName); + delegate.setAttachment(req, res, attach, attachFileName); // establish mimetype String mimetype = reader.getMimetype(); diff --git a/source/java/org/alfresco/repo/web/scripts/content/ContentStreamer.java b/source/java/org/alfresco/repo/web/scripts/content/ContentStreamer.java index e9e484e919..5000b086b7 100644 --- a/source/java/org/alfresco/repo/web/scripts/content/ContentStreamer.java +++ b/source/java/org/alfresco/repo/web/scripts/content/ContentStreamer.java @@ -526,7 +526,7 @@ public class ContentStreamer implements ResourceLoaderAware String attachFileName, Map model) throws IOException { - setAttachment(res, attach, attachFileName); + setAttachment(null, res, attach, attachFileName); // establish mimetype String mimetype = reader.getMimetype(); @@ -611,11 +611,12 @@ public class ContentStreamer implements ResourceLoaderAware /** * Set attachment header * + * @param req * @param res * @param attach * @param attachFileName */ - public void setAttachment(WebScriptResponse res, boolean attach, String attachFileName) + public void setAttachment(WebScriptRequest req, WebScriptResponse res, boolean attach, String attachFileName) { if (attach == true) { @@ -624,8 +625,26 @@ public class ContentStreamer implements ResourceLoaderAware { if (logger.isDebugEnabled()) logger.debug("Attaching content using filename: " + attachFileName); - - headerValue += "; filename*=UTF-8''" + WebDAVHelper.encodeURL(attachFileName) + "; filename=\"" + attachFileName + "\""; + + if (req == null) + { + headerValue += "; filename*=UTF-8''" + WebDAVHelper.encodeURL(attachFileName) + + "; filename=\"" + attachFileName + "\""; + } + else + { + String userAgent = req.getHeader(HEADER_USER_AGENT); + boolean isMSIE8 = (null != userAgent) && userAgent.contains("MSIE 8"); + if (isMSIE8) + { + headerValue += "; filename=\"" + WebDAVHelper.encodeURL(attachFileName); + } + else + { + headerValue += "; filename=\"" + attachFileName + "\"; filename*=UTF-8''" + + WebDAVHelper.encodeURL(attachFileName); + } + } } // set header based on filename - will force a Save As from the browse if it doesn't recognize it diff --git a/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java b/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java index 230a2473e0..d79b47b02d 100644 --- a/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java +++ b/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java @@ -60,7 +60,7 @@ public class StreamContent extends AbstractWebScript protected PermissionService permissionService; protected NodeService nodeService; protected MimetypeService mimetypeService; - private ContentStreamer delegate; + protected ContentStreamer delegate; /** * @param mimetypeService @@ -194,7 +194,7 @@ public class StreamContent extends AbstractWebScript */ protected void setAttachment(WebScriptResponse res, boolean attach, String attachFileName) { - delegate.setAttachment(res, attach, attachFileName); + delegate.setAttachment(null, res, attach, attachFileName); } /**