Вопрос по file-upload, jsf, primefaces – Где p: fileUpload сохранить мой файл?

4

У меня есть функция p: fileUpload на моей странице, и каждый раз, когда я загружаю файл, я не могу найти его в папке, указанной в моем файле web.xml.

Я добавил следующие jar-файлы в мою библиотеку: primefaces-3.2.jar commons-io-2.3.jar commons-fileupload-1.2.2.jar

Вот мой файл web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     version="3.0">

    <filter> 
        <filter-name>PrimeFaces FileUpload Filter</filter-name> 
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
    <init-param> 
        <param-name>uploadDirectory</param-name> 
        <param-value>C:\Users\SomeUser\Documents\NetBeansProjects\System\Upload\</param-value> 
    </init-param> 
    <init-param> 
        <param-name>thresholdSize</param-name> 
        <param-value>1000000</param-value> 
    </init-param> 
    </filter>

    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>

    <error-page>
        <error-code>404</error-code>
        <location>/404.jsf</location>
    </error-page>

    <context-param>  
    <param-name>primefaces.THEME</param-name>  
    <param-value>aristo</param-value>  
</context-param>  

</web-app>

Я использую следующее: PrimeFaces 3.2, JSF 2.0 и GlassFish 3.1.1

Любая помощь будет оценена. Спасибо

Ваш Ответ

1   ответ
7

java.io.tmpdir системное свойство. Вы могли бы использоватьUploadedFile#getContents() или жеUploadedFile#getInputStream() получить содержимое файла и записать его в нужную папку. Но вы также можете изменить местоположение загрузки по умолчанию с помощью параметра инициализации фильтра.

Поместите это в<filter> элемент фильтра загрузки файлов:

<init-param>
    <param-name>uploadDirectory</param-name>
    <param-value>/path/to/uploads</param-value>
</init-param>

Обратите внимание, что когда вы запускаете Windows, она будет зависеть от диска, с которого запускается веб-сервер. Так что, если этоC:\то приведенный выше параметр init на самом деле разрешитC:\path\to\uploads, Вам также следует убедиться, что эта папка уже подготовлена заранее и, таким образом, существует и доступна для записи.

Еще раз спасибо BalusC, теперь он загружает в нужную папку, однако это временный файл, не знаю, как с этим справиться. user1404693
Он действительно предназначен для временного файла. Обычный подход состоит в том, чтобы получить его содержимое, а затем записать его в нужное место с нужным именем файла с помощьюFileOutputStream в методе действия bean-компонента.
Если для загрузчика установлено значение auto (native cuz jsf & gt; = 2.2), как мне изменить местоположение файла? & Lt; context-param & gt; & Lt; пары имя-& GT; primefaces.UPLOADER & л; пары имя-& GT /; & Lt; пары-значение & GT; автоматическое & л; / пары-значение & GT; & Lt; / контекстно-пары & GT;

Похожие вопросы