【问题标题】:Primefaces Fileupload on Wildfly在 Wildfly 上上传 Primefaces 文件
【发布时间】: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进阶

【问题讨论】:

    标签: primefaces jsf-2.2 wildfly


    【解决方案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 解决方案为我解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2012-04-04
    • 2013-10-24
    • 1970-01-01
    • 2013-07-10
    • 2012-01-21
    相关资源
    最近更新 更多