Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/ExportToolContentAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/authoring/web/ExportToolContentAction.java,v diff -u -r1.10 -r1.11 --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/ExportToolContentAction.java 28 Jun 2007 01:54:26 -0000 1.10 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/ExportToolContentAction.java 16 Sep 2007 05:24:54 -0000 1.11 @@ -31,9 +31,11 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.List; +import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.mail.internet.MimeUtility; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -105,9 +107,41 @@ File xslt = new File(this.getServlet().getServletContext().getRealPath(IMS_XSLT_PATH)+File.separator+IMS_XSLT_NAME); String zipFilename = service.exportLearningDesign(learningDesignId,toolsErrorMsgs,format,xslt); + // get only filename + String zipfile = FileUtil.getFileName(zipFilename); + //write zip file as response stream. - response.setContentType("application/zip"); - response.setHeader("Content-Disposition","attachment;filename="+FileUtil.getFileName(zipFilename)); + + // Different browsers handle stream downloads differently LDEV-1243 + String agent = request.getHeader("USER-AGENT"); + + log.debug("Browser is:" + agent); + + String filename = null; + + if (null != agent && -1 != agent.indexOf("MSIE")) + { + // if MSIE then urlencode it + filename = URLEncoder.encode(zipfile, "UTF-8"); + + } + else if (null != agent && -1 != agent.indexOf("Mozilla")) + { + // if Mozilla then base64 url_safe encoding + filename = MimeUtility.encodeText(zipfile, "UTF-8", "B"); + + } + else + { + // any others use same filename. + filename = zipfile; + + } + log.debug("Final filename to export: " + filename); + + response.setContentType("application/x-download"); +// response.setContentType("application/zip"); + response.setHeader("Content-Disposition","attachment;filename="+filename); InputStream in = null; OutputStream out = null; try { Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java,v diff -u -r1.71 -r1.72 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java 29 Aug 2007 03:44:54 -0000 1.71 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java 16 Sep 2007 05:26:28 -0000 1.72 @@ -42,7 +42,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; -import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -485,7 +484,7 @@ } // zip file name with full path - targetZipFileName = URLEncoder.encode(ldDto.getTitle() + EXPORT_TOOLCONTNET_ZIP_SUFFIX, "UTF-8"); + targetZipFileName = ldDto.getTitle() + EXPORT_TOOLCONTNET_ZIP_SUFFIX; log.debug("Create export content target zip file. File name is " + targetZipFileName); //create zip file and return zip full file name