From 66381cf8d8773a475c48b71ebdcd029caa4fbea5 Mon Sep 17 00:00:00 2001 From: Thorsten Vitt <thorsten.vitt@uni-wuerzburg.de> Date: Tue, 18 Jun 2013 11:16:53 +0000 Subject: [PATCH] Fixed Content-Disposition header. Work around a problem in Android by removing the space inside the header (after the ;). Additionally, we deliver EPUBs with ASCII safe names now git-svn-id: https://develop.sub.uni-goettingen.de/repos/textgrid/trunk/services/aggregator@14161 7c539038-3410-0410-b1ec-0f2a7bf1c452 --- .../info/textgrid/services/aggregator/RESTUtils.java | 9 +++++++-- .../info/textgrid/services/aggregator/epub/EPUB.java | 5 ++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/info/textgrid/services/aggregator/RESTUtils.java b/src/main/java/info/textgrid/services/aggregator/RESTUtils.java index d820c1a..cb4c886 100644 --- a/src/main/java/info/textgrid/services/aggregator/RESTUtils.java +++ b/src/main/java/info/textgrid/services/aggregator/RESTUtils.java @@ -9,8 +9,13 @@ public class RESTUtils { public static ResponseBuilder addAttachmentFilename(final ResponseBuilder builder, final String fileName) { final String asciiFileName = fileName.replaceAll("[^A-Za-z0-9.-]", "_"); final String extendedNameSpec = "UTF-8''" + UriBuilder.fromPath(fileName).build().toASCIIString(); - builder.header("Content-Disposition", "attachment; filename*=\"" + extendedNameSpec + "\"; " + - /* builder.header("Content-Disposition", */ " filename=\"" + asciiFileName + "\" " ); + + if (!asciiFileName.equals(fileName)) + builder.header("Content-Disposition", "attachment;filename*=\"" + extendedNameSpec + "\";" + + /* builder.header("Content-Disposition", */ "filename=\"" + asciiFileName + "\"" ); + else + builder.header("Content-Disposition", "attachment;filename=\"" + asciiFileName + "\"" ); + builder.header("X-Attachment-Orig-Filename", fileName); return builder; } diff --git a/src/main/java/info/textgrid/services/aggregator/epub/EPUB.java b/src/main/java/info/textgrid/services/aggregator/epub/EPUB.java index 5117039..4547e4f 100644 --- a/src/main/java/info/textgrid/services/aggregator/epub/EPUB.java +++ b/src/main/java/info/textgrid/services/aggregator/epub/EPUB.java @@ -12,6 +12,7 @@ import info.textgrid.services.aggregator.RESTUtils; import info.textgrid.services.aggregator.TextGridRepProvider; import info.textgrid.services.aggregator.teicorpus.TEICorpusSerializer; +import info.textgrid.services.aggregator.tree.FilenamePolicy; import java.io.File; import java.io.FileNotFoundException; @@ -163,11 +164,9 @@ public InputStream getInput() throws IOException { return RESTUtils .attachmentResponse( - rootObject.getGeneric().getProvided().getTitle() - .get(0) + FilenamePolicy.getTransliterator().transliterate(rootObject.getGeneric().getProvided().getTitle().get(0)) + ".epub").type("application/epub+zip") .entity(new EPUBSerializer(workingDir, repository, corpus)).build(); - } catch (final FileNotFoundException e) { throw new WebApplicationException(e); } catch (final IOException e) { -- GitLab