Repository: nifi Updated Branches: refs/heads/master ecbed6a78 -> e76c54234
NIFI-5881: Enable to export the template for non-ascii name This closes #3210. Signed-off-by: Koji Kawamura <ijokaruma...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/e76c5423 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/e76c5423 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/e76c5423 Branch: refs/heads/master Commit: e76c54234dc8997e22aa0227f969b5808eccacbf Parents: ecbed6a Author: Kemix Koo <kemix_...@163.com> Authored: Fri Dec 7 16:31:36 2018 +0800 Committer: Koji Kawamura <ijokaruma...@apache.org> Committed: Mon Dec 10 09:51:46 2018 +0900 ---------------------------------------------------------------------- .../org/apache/nifi/web/api/TemplateResource.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/e76c5423/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java index 4a3de4f..cd3605c 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java @@ -43,9 +43,13 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.nio.charset.Charset; import java.util.Set; /** @@ -142,14 +146,22 @@ public class TemplateResource extends ApplicationResource { attachmentName = attachmentName.replaceAll("\\s", "_"); } + final Charset utf8 = StandardCharsets.UTF_8; + try { + attachmentName = URLEncoder.encode(attachmentName, utf8.name()); + } catch (UnsupportedEncodingException e) { + // + } + // generate the response /* * Here instead of relying on default JAXB marshalling we are simply * serializing template to String (formatted, indented etc) and sending * it as part of the response. */ - String serializedTemplate = new String(TemplateSerializer.serialize(template), StandardCharsets.UTF_8); - return generateOkResponse(serializedTemplate).header("Content-Disposition", String.format("attachment; filename=\"%s.xml\"", attachmentName)).build(); + String serializedTemplate = new String(TemplateSerializer.serialize(template), utf8); + String filename = attachmentName + ".xml"; + return generateOkResponse(serializedTemplate).encoding(utf8.name()).header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename* = " + utf8.name() + "''" + filename).build(); } /**