Загрузка файла с именем файла более 255 символов с использованием MS edge

Я использую Spring Framework для предоставления файла для скачивания. У меня есть следующий код.

public ResponseEntity<List<Integer>>
            defExport()
                    throws IllegalStateException,
                    IOException {
        Map<String, Object> resultMap = Maps.newHashMap();
        int status = STATUS_SUCCESS;
        HttpHeaders headers = new HttpHeaders();
        List<Integer> byteList = Lists.newArrayList();
        try {
            File file = transformService.executeExport(something);
            byte[] fileContent = null;
            try (InputStream is = new FileInputStream(file)) {
                fileContent = read(is);
            }
            String fileName = StringUtils.join(something, ".xlsx");
            headers.add("fileName", fileName);
            headers.add("Content-Disposition", StringUtils.join(
                    "attachment; filename=\"", URLEncoder.encode(fileName, "UTF8"), "\""));
            for (byte b : fileContent) {
                byteList.add(new Integer(b));
            }
        } catch (Exception e) {
            status = STATUS_ERROR;
        }
        headers.add("ifxResultStatus", String.valueOf(status));
        return new ResponseEntity<>(byteList, headers, HttpStatus.OK);

на стороне JS у меня есть следующее:

_self.xhr.open('POST', targetUrl, true);
        _self.xhr.onreadystatechange = goog.bind(this.blankDlResponseHandler, this);
        _self.xhr.setRequestHeader('X-CSRF-TOKEN', project.core.app.View.getCsrfToken());
        var form_data = new FormData();
        _self.xhr.send(form_data);

Когда я пытаюсь загрузить файл с именем, длина которого превышает 255 символов, я могу сделать это успешно в Chrome и IE11 в Windows 10.

Тем не менее, когда я пытаюсь сделать это в MS Edge, загрузка не удалась из-за длинного имени файла. Как я могу заставить это работать на MS Edge также.

редактировать

Я только что понял, что в Chrome имя файла всегда ограничено 218 символами, а последние символы обрезаются.

Итак, мой новый вопрос: как я могу ограничить количество символов до 218, особенно в случае, когда файл с таким именем уже существует (к нему добавляются имена файлов (1),(2) и т. Д.)

0 ответов

Другие вопросы по тегам