diff --git a/src/main/java/ru/soune/nocopy/controller/ApiController.java b/src/main/java/ru/soune/nocopy/controller/ApiController.java index 2df50eb..31f6d6b 100644 --- a/src/main/java/ru/soune/nocopy/controller/ApiController.java +++ b/src/main/java/ru/soune/nocopy/controller/ApiController.java @@ -10,7 +10,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; -import org.springframework.http.ContentDisposition; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -43,10 +42,10 @@ import ru.soune.nocopy.service.file.CheckCounterService; import ru.soune.nocopy.service.file.ProtectionsLimitService; import ru.soune.nocopy.service.file.cloud.CloudStorageService; import ru.soune.nocopy.service.register.AuthService; -import ru.soune.nocopy.service.user.moderation.UserVerificationService; import ru.soune.nocopy.util.FileUtil; import java.io.File; +import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -608,13 +607,13 @@ public class ApiController { dockViewService.createDockView(viewerRequest, userId); String filename = entityResponse.getFileName(); - ContentDisposition contentDisposition = ContentDisposition.builder("attachment") - .filename(filename, StandardCharsets.UTF_8) - .build(); + String encodedFilename = URLEncoder.encode(filename, StandardCharsets.UTF_8) + .replace("+", "%20"); return ResponseEntity.ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) - .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString()) + .header(HttpHeaders.CONTENT_DISPOSITION, + "attachment; filename*=UTF-8''" + encodedFilename) .body(bytes); } catch (FileEntityNotFoundException e) { Map errorData = new HashMap<>();