From 7fd1ed2f9fc0c15d334826150ee4cd853048f82b Mon Sep 17 00:00:00 2001 From: Sonia Zorba Date: Tue, 23 Feb 2021 18:43:41 +0100 Subject: [PATCH] Fixed encoding issue in file download --- .../inaf/ia2/transfer/controller/GetFileController.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/it/inaf/ia2/transfer/controller/GetFileController.java b/src/main/java/it/inaf/ia2/transfer/controller/GetFileController.java index cbc52d7..c2f2b75 100644 --- a/src/main/java/it/inaf/ia2/transfer/controller/GetFileController.java +++ b/src/main/java/it/inaf/ia2/transfer/controller/GetFileController.java @@ -9,6 +9,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UncheckedIOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Optional; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; @@ -99,11 +101,13 @@ public class GetFileController extends FileController { String vosName = fileInfo.getVirtualPath().substring(fileInfo.getVirtualPath().lastIndexOf("/") + 1); - response.setHeader("Content-Disposition", "attachment; filename=" + vosName); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(vosName, StandardCharsets.UTF_8)); response.setHeader("Content-Length", String.valueOf(file.length())); + response.setCharacterEncoding("UTF-8"); byte[] bytes = new byte[1024]; - try ( OutputStream out = response.getOutputStream(); InputStream is = new FileInputStream(file)) { + try (OutputStream out = response.getOutputStream(); + InputStream is = new FileInputStream(file)) { int read; while ((read = is.read(bytes)) != -1) { out.write(bytes, 0, read); -- GitLab