ВАЖНО! В Struts версии
2.3.24
устранена следующая проблема.Начиная с этой версии нет необходимости экранировать какой-либо символ.
Подробнее: JIRA Issue WW-4457.
Я настроил перехватчик Struts2 FileUpload, чтобы разрешить белый список типов содержимого.
Это корректно работает с любым файлом, соответствующим указанному Content-Type, но не работает с SVG
файлами, которые имеет тип носителя MIME image/svg+xml
.
Используя эту конфигурацию:
@Action(value = "upload",
interceptorRefs = @InterceptorRef(
value = "defaultStack",
params = { "fileUpload.allowedTypes" , "application/pdf,"
+ "image/jpeg,"
+ "image/gif,"
+ "image/png,"
+ "image/svg+xml"
}))
и загружая действительный файл SVG, я получаю сообщение об ошибке, определяемое свойством struts.messages.error.content.type.not.allowed
:
Тип контента не разрешен: {0} {1} {2} {3}
где {3}
— это Content-Type, который пользователь пытается загрузить;
Тогда, например:
Content-Type не разрешен: myFile Sample.svg upload__123__456__78.tmp image/svg+xml
Это точно тот же Content-Type, который я определил в allowedTypes
белом списке.
Обратите внимание, что я использую regex
Pattern Matcher, включенный со следующей константой в struts.xml:
<constant name="struts.patternMatcher" value="regex" />
Почему не работает и как заставить работать?
regex
? - person Aleksandr M   schedule 04.02.2015