Я использую Primefaces 3.2. У меня возникли проблемы с использованием файловых полей fileDownload. Я могу загрузить файлы и сохранить их неанглийское имя на сервере (в моем случае это русский). Однако, когда я использую p: fileDownload для загрузки загруженных файлов, я не могу использовать русские буквы, так как они становятся коррумпированными. Кажется, что конструктор класса DefaultStreamedContent принимает только латинские буквы. Я делаю все в соответствии с витриной на веб-сайте perffaces, как показано ниже.Файл с главными файламиЗагрузить неправильные имена файлов, поврежденные
public FileDownloadController() {
InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("/images/optimusprime.jpg");
file = new DefaultStreamedContent(stream, "image/jpg", "downloaded_optimus.jpg");
}
Любые идеи, как я могу решить свою проблему?
Спасибо, заранее.
Я завален, но вы можете связать файл в качестве примера? Я разорвал этот сервлет отдельно 4 месяца назад, и я был бы счастлив запустить его через отладчик, если у меня есть что-то использовать. –
Вы имеете в виду файл, который я использовал? Как я могу связать его здесь? Я использовал файл .docx с русским именем. Если вам это не сложно, вы можете создать любой файл .doc или .docx и дать ему имя на русском «Тестовый файл» (тестовый файл). – Nurjan
Извините за задержку: я не смог воссоздать, но вот где вы хотите посмотреть: http://code.google.com/p/primefaces/source/browse/primefaces/trunk/src/main/java /org/primefaces/webapp/MultipartRequest.java В основном он построен поверх ApacheFileUpload и использует этот метод (parseRequest) для его выполнения. Кроме того, убедитесь, что ваш набор символов правильный, и он не передает потоки в ASCII или что-то глупое, когда он сохраняет. –