При скачивании вложения, содержащего в названии пробелы происходит "переименование" файла, так как пробелы эти легким движением руки превращаются в плюсы. У поддержки была запрошена схема и метод, в которых происходит данная замена. Ну и что выяснилось?
Схема FileServices, метод GetResponseContentDisposition, строка:
processedFileName = "\"" + fileName + "\"; filename*=UTF-8''" + HttpUtility.UrlEncode(fileName);
вот тут и зарыта собака. Меняем это на
processedFileName = "\"" + fileName + "\"; filename*=UTF-8''" + Uri.EscapeUriString(fileName);
и все, забываем про плюсы. Проблема в том, что эта замена требует разблокировки базового пакета :( Проверяли на Хроме и Эдже - работает, в том числе с диакритикой. Ну вот почему бы не сделать в коробке?
Понравилась ли вам эта идея?
Такая замена сделана специально, чтобы избежать ошибок при скачивании файлов. Аналогично работает, например, выгрузка в Word в Atlassian Confluence. Напишите в поддержку и предложите свой вариант изменения, если считаете, что он работает лучше и не имеет побочных эффектов.
Вообще-то я и написал свой вариант изменения. Результат на скриншоте.
Теперь нужно проверить, всегда ли он работает корректно: разные имена файлов, ОС, браузеры.
это решалось так в рамках прикладной задачи
тестировать промышленно я не готов :)
Тогда ждите, пока это сделают специально обученные разработчики «коробки». Если у них ещё нет примера, когда пробел работает хуже.
Да мне-то что? :) у меня решение есть. А кстати - решалось как раз для любителей алассиана, которым и там это поперек горла.
Зверев Александр,
может стоит передать данное решение команде разработки, которая ответственная за данный функционал, а они уже решат корректно ли оно и заодно протестируют?