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 cbc52d72a4fac359a810c29fc9557500e1f61187..c2f2b753037eb995f3ae6171f6c297c872dc3b8a 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);