From c1a0351a7338ee803d9f77853351641e456b8f78 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Tue, 11 Feb 2014 18:42:44 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud) 57029: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3) 56496: Merged HEAD-BUG-FIX to V4.2-BUG-FIX (4.2.1) 55754: Merged V4.1-BUG-FIX (4.1.7) to HEAD-BUG-FIX 54754: Merged V4.1.6 (4.1.6) to V4.1-BUG-FIX (4.1.7) 54570: MNT-2258: IE's File Download box does not show a filename correctly when that have non-ASCII characters in the filename For file download in IE8 use legacy filename token with encoded value in "Content-Disposition" header git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@61662 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/web/scripts/content/ContentInfo.java | 4 +-- .../web/scripts/content/ContentStreamer.java | 27 ++++++++++++++++--- .../web/scripts/content/StreamContent.java | 4 +-- 3 files changed, 27 insertions(+), 8 deletions(-) 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); } /**