#jsf #file-upload #jsf-2
#jsf #загрузка файла #jsf-2
Вопрос:
У меня есть это поле входного файла в моей форме для загрузки файла.
<h:form id="stammdaten" enctype="multipart/form-data">
<h:inputFile id="profileImage" value="#{stammdatenController.file}" />
</h:form>
Приведенный выше код загружает файл правильно. Но проблема в том, что если я выбираю файл размером более 1 МБ, он не загружается. Только файлы размером менее 1 МБ загружаются правильно.
Как я могу увеличить этот лимит загрузки файла до 2 МБ?
Редактировать: мой web.xml
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<context-param>
<param-name>primefaces.CLIENT_SIDE_VALIDATION</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>0</param-value>
</context-param>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>facelets.SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
и мой вспомогательный компонент:
private Part file;
public void upload() throws IOException{
try (InputStream input = file.getInputStream()) {
FileUtils.copyToFile(input, new File("/home/john/Pictures/uploads/test.jpg"));
}
}
Комментарии:
1. Нулевая информация об используемом JSF (
h:inputFile
было (было?) Так много проблем в Mojarra), нулевая информация об используемом сервере (и эти проблемы почти всегда связаны с сервером / конфигурацией), нулевая информация о сообщении об ошибке (вы выбираете файл и абсолютно ничего не происходит?). У вас естьmultipart-config
inweb.xml
?2. Я обновил свой вопрос дополнительной информацией. Просто примечание, я не делал никаких настроек сервера / конфигурации для загрузки файлов. И, если я отправляю форму, в журнале сервера нет ошибки, я перенаправляюсь на ту же страницу после отправки формы
3. Информация о сервере важна, поскольку все серверы имеют ограничение на размер записи, которое необходимо настроить с помощью настроек, специфичных для сервера. Однако 1 МБ — это довольно мало (конечно, если вы имели в виду МБ вместо Мб).
4.Я использую spring boot, встроенный в сервер tomcat. Поэтому я добавил
spring.http.multipart.max-file-size=10Mb # Max file size.
spring.http.multipart.max-request-size=10Mb # Max request size.
и в web.xml Я также добавил тот же размер в соответствии с ответом ниже. Я также попробовал primefaces и столкнулся с той же проблемой размером 1 МБ5. У меня есть полный проект на github github.com/shiblybcc/javaoutgoingerasmus/tree/3-way-join-table
Ответ №1:
Обновите web.xml
:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<multipart-config>
<max-file-size>put_your_desired_value</max-file-size>
<max-request-size>also_here_request_size</max-request-size>
<file-size-threshold>and_here_in_bytes</file-size-threshold>
</multipart-config>
</servlet>
Комментарии:
1. К сожалению, это не работает. Я думаю, что мне здесь не хватает чего-то простого. После отправки формы страница просто обновляется. На самом деле он не отправляет форму на сервер.