在 Wildfly 上上传 Primefaces 文件
Posted
技术标签:
【中文标题】在 Wildfly 上上传 Primefaces 文件【英文标题】:Primefaces Fileupload on Wildfly 【发布时间】:2014-04-22 18:04:40 【问题描述】:我正在尝试将个人资料图像保存在数据库中。
页面:
<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)$/" />
支持:
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);
选择图片后,图片没有改变,我的控制台出现以下错误
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
我也发现了这个问题 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>
但没有任何改变。
有什么想法吗? TY进阶
【问题讨论】:
【参考方案1】:我遇到了同样的错误:
[io.undertow.request] (default task-62) UT005005: Cannot remove uploaded file...
但是我可以通过在阅读后关闭流来解决这个问题。
这是我的一段代码(有点不同):
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];
添加行后:
is.close();
udtow 错误 UT005005 消失了。
【讨论】:
最好在 finally 块中关闭流或使用 try-with-resources :try(InputStream is = upFile.getInputstream()) bytes = IOUtils.toByteArray(is);
【参考方案2】:
我忘记在 StreamedContent 中设置 mimetype
【讨论】:
您好,您能否提供有关解决方案的更多详细信息?我面临同样的错误消息问题。 return new DefaultStreamedContent(new ByteArrayInputStream(image), "image/jpeg"); 我忘记在我的 StreamedContent 中添加 mimetype "image/jpeg" 即使使用 mimetype 我也遇到了同样的问题,Mitja 解决方案为我解决了这个问题。以上是关于在 Wildfly 上上传 Primefaces 文件的主要内容,如果未能解决你的问题,请参考以下文章
JBoss EAP 7.3 上的 Primefaces 6 文件上传问题
PrimeFaces uploadFile,尝试上传多个文件并停在一个文件上