From 74967f038707374661a6765245c062cb9f7bc7d7 Mon Sep 17 00:00:00 2001
From: leonardovannucci <leonardo.vannucci@digi-one.eu>
Date: Wed, 13 May 2020 15:00:07 +0200
Subject: [PATCH] Fix encoding filename
---
dg1cloud-core/src/main/java/it/digione/dg1cloud/service/Utils.java | 7 ++++---
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileCaptchaController.java | 3 ++-
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileCaptchaController.java b/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileCaptchaController.java
index 8d7c7b0..cb69e3e 100644
--- a/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileCaptchaController.java
+++ b/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileCaptchaController.java
@@ -1,6 +1,7 @@
package it.digione.dg1cloud.controller;
import java.io.FileNotFoundException;
+import java.io.UnsupportedEncodingException;
import javax.validation.Valid;
@@ -28,7 +29,7 @@
@PostMapping
public Object handleDownloadFileCaptcha(@ModelAttribute("downloadFileCaptchaForm") @Valid DownloadFileCaptchaForm form,
- BindingResult result) throws FileNotFoundException{
+ BindingResult result) throws FileNotFoundException, UnsupportedEncodingException{
ModelAndView modelAndView;
if (result.hasErrors()){
diff --git a/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/Utils.java b/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/Utils.java
index 1ebd03e..a6ee67f 100644
--- a/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/Utils.java
+++ b/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/Utils.java
@@ -4,6 +4,7 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
@@ -33,7 +34,7 @@
@Autowired private RegDocumentRepository regDocumentRepository;
@Autowired private ServletContext servletContext;
- private static final Logger logger = LoggerFactory.getLogger(CloudService.class);
+ private static final Logger logger = LoggerFactory.getLogger(Utils.class);
public URL generateUrl(RegDocument regDocument) throws MalformedURLException {
logger.debug("Genero l'url per il record file {} con id {}", regDocument.getFileName(), regDocument.getDocumentId());
@@ -66,7 +67,7 @@
}
public ResponseEntity<InputStreamResource> getDownloadResponseEntity(String fileName, long id, String secretKey)
- throws FileNotFoundException {
+ throws FileNotFoundException, UnsupportedEncodingException {
logger.debug("Avvio download file {} con id {}", fileName, id);
MediaType mediaType = MediaType.APPLICATION_OCTET_STREAM;
@@ -104,7 +105,7 @@
InputStreamResource isr = new InputStreamResource(fis);
return ResponseEntity.ok()
// Content-Disposition
- .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + file.getName())
+ .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename*=UTF-8''" + java.net.URLEncoder.encode(file.getName(),"UTF-8").replaceAll("\\+", "%20"))
// Content-Type
.contentType(mediaType)
// Contet-Length
--
Gitblit v1.6.2