DCO*_*DCO 8 primefaces jsf-2.2 wildfly
我想在数据库中保存配置文件图像.
页:
<p:graphicImage id="profileImage"
value="#{myProfile.usersProfileImage}" />
<p:fileUpload fileUploadListener="#{myProfile.fileUploadListener}"
auto="true" mode="advanced" update="profileImage"
sizeLimit="100000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
Run Code Online (Sandbox Code Playgroud)
后盾:
public StreamedContent getUsersProfileImage() {
return new DefaultStreamedContent(new ByteArrayInputStream(
user.getProfileJpegImage()));
}
public void fileUploadListener(FileUploadEvent event) {
try {
setProfileImageFromInputStream(event.getFile().getInputstream());
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
private void setProfileImageFromInputStream(InputStream stream) {
try {
user.setProfileJpegImage(IOUtils.toByteArray(stream));
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
选择图片后,图片不会改变,我的控制台出现以下错误
14:36:02,387 ERROR [io.undertow.request] (default task-2) UT005005: Cannot remove uploaded file C:\Development\wildfly-8.0.0.Final\standalone\tmp\myApp.war\undertow3307538071115388117upload
Run Code Online (Sandbox Code Playgroud)
我也发现了这个问题 https://issues.jboss.org/browse/WFLY-2329
我还尝试使用multipart-config来扩展我的Faces Servlet,例如:
<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>20848820</max-file-size>
<max-request-size>418018841</max-request-size>
<file-size-threshold>1048576</file-size-threshold>
</multipart-config>
</servlet>
Run Code Online (Sandbox Code Playgroud)
但没有改变.
有任何想法吗?TY先进
Mit*_*boc 11
我得到了同样的错误:
[io.undertow.request] (default task-62) UT005005: Cannot remove uploaded file...
Run Code Online (Sandbox Code Playgroud)
但是我可以通过在阅读后关闭流来解决这个问题.
这是我的一大堆代码(它有点不同):
byte[] bytes;
try {
InputStream is = upFile.getInputstream();
if (is != null) {
bytes = IOUtils.toByteArray(is);
is.close();
} else {
bytes = new byte[0];
}
} catch (IOException e) {
log.error(e.getMessage());
bytes = new byte[0];
}
Run Code Online (Sandbox Code Playgroud)
添加行后:
is.close();
Run Code Online (Sandbox Code Playgroud)
udertow错误UT005005消失了.
| 归档时间: |
|
| 查看次数: |
3883 次 |
| 最近记录: |