File upload Primefaces文件上载不适用于文件大小>;1Mb。

File upload Primefaces文件上载不适用于文件大小>;1Mb。,file-upload,primefaces,jsf-2.2,apache-commons-fileupload,File Upload,Primefaces,Jsf 2.2,Apache Commons Fileupload,我上传大于1mb的文件时遇到问题。不会调用FileUploadEvent,因为较小的文件正常工作 Web.xml: <filter> <filter-name>PrimeFaces FileUpload Filter</filter-name> <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> <init-p

我上传大于1mb的文件时遇到问题。不会调用FileUploadEvent,因为较小的文件正常工作

Web.xml:

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>52428800</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>D:\</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
 @ManagedBean
@RequestScoped
public class TesteUpload {

    public void handleFileUpload(FileUploadEvent event) {
        UploadedFile uploadedFile = event.getFile();
        File file = new File(PropertiesLoader.getInstance().getPropertie(PropertiesLoader.PATCH_MIDIA), uploadedFile.getFileName());

        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            byte[] buffer = new byte[6124];
            int bulk;
            InputStream inputStream = event.getFile().getInputstream();
            while (true) {
                bulk = inputStream.read(buffer);
                if (bulk < 0) {
                    break;
                }
                fileOutputStream.write(buffer, 0, bulk);
                fileOutputStream.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
            FacesMessage error = new FacesMessage("Erro!!");
            FacesContext.getCurrentInstance().addMessage(null, error);
        }
    }
}
<ui:composition template="/public/templates/master.xhtml" 
            xmlns="http://www.w3.org/1999/xhtml" 
            xmlns:f="http://java.sun.com/jsf/core" 
            xmlns:h="http://java.sun.com/jsf/html" 
            xmlns:ui="http://java.sun.com/jsf/facelets" 
            xmlns:p="http://primefaces.org/ui">

<ui:define name="divMainPublic">

    <h:form enctype="multipart/form-data">
        <p:fileUpload fileUploadListener="#{testeUpload.handleFileUpload}" mode="advanced" sizeLimit="51380224" />
    </h:form>

</ui:define>

PrimeFaces文件上载筛选器
org.primefaces.webapp.filter.FileUploadFilter
阈值大小
52428800
上传目录
D:\
PrimeFaces文件上载筛选器
Facesservlet
ManagedBean:

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>52428800</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>D:\</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
 @ManagedBean
@RequestScoped
public class TesteUpload {

    public void handleFileUpload(FileUploadEvent event) {
        UploadedFile uploadedFile = event.getFile();
        File file = new File(PropertiesLoader.getInstance().getPropertie(PropertiesLoader.PATCH_MIDIA), uploadedFile.getFileName());

        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            byte[] buffer = new byte[6124];
            int bulk;
            InputStream inputStream = event.getFile().getInputstream();
            while (true) {
                bulk = inputStream.read(buffer);
                if (bulk < 0) {
                    break;
                }
                fileOutputStream.write(buffer, 0, bulk);
                fileOutputStream.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
            FacesMessage error = new FacesMessage("Erro!!");
            FacesContext.getCurrentInstance().addMessage(null, error);
        }
    }
}
<ui:composition template="/public/templates/master.xhtml" 
            xmlns="http://www.w3.org/1999/xhtml" 
            xmlns:f="http://java.sun.com/jsf/core" 
            xmlns:h="http://java.sun.com/jsf/html" 
            xmlns:ui="http://java.sun.com/jsf/facelets" 
            xmlns:p="http://primefaces.org/ui">

<ui:define name="divMainPublic">

    <h:form enctype="multipart/form-data">
        <p:fileUpload fileUploadListener="#{testeUpload.handleFileUpload}" mode="advanced" sizeLimit="51380224" />
    </h:form>

</ui:define>
@ManagedBean
@请求范围
公共类测试上传{
公共无效handleFileUpload(FileUploadEvent事件){
UploadedFile UploadedFile=event.getFile();
File File=新文件(PropertiesLoader.getInstance().getPropertie(PropertiesLoader.PATCH_MIDIA),uploadedFile.getFileName());
试一试{
FileOutputStream FileOutputStream=新的FileOutputStream(文件);
字节[]缓冲区=新字节[6124];
整块;
InputStream InputStream=event.getFile().getInputstream();
while(true){
bulk=inputStream.read(缓冲区);
如果(体积<0){
打破
}
写入(缓冲区,0,大容量);
fileOutputStream.flush();
}
}捕获(IOE异常){
e、 printStackTrace();
FacesMessage error=新的FacesMessage(“Erro!!”);
FacesContext.getCurrentInstance().addMessage(null,错误);
}
}
}
页面:

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>52428800</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>D:\</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
 @ManagedBean
@RequestScoped
public class TesteUpload {

    public void handleFileUpload(FileUploadEvent event) {
        UploadedFile uploadedFile = event.getFile();
        File file = new File(PropertiesLoader.getInstance().getPropertie(PropertiesLoader.PATCH_MIDIA), uploadedFile.getFileName());

        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            byte[] buffer = new byte[6124];
            int bulk;
            InputStream inputStream = event.getFile().getInputstream();
            while (true) {
                bulk = inputStream.read(buffer);
                if (bulk < 0) {
                    break;
                }
                fileOutputStream.write(buffer, 0, bulk);
                fileOutputStream.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
            FacesMessage error = new FacesMessage("Erro!!");
            FacesContext.getCurrentInstance().addMessage(null, error);
        }
    }
}
<ui:composition template="/public/templates/master.xhtml" 
            xmlns="http://www.w3.org/1999/xhtml" 
            xmlns:f="http://java.sun.com/jsf/core" 
            xmlns:h="http://java.sun.com/jsf/html" 
            xmlns:ui="http://java.sun.com/jsf/facelets" 
            xmlns:p="http://primefaces.org/ui">

<ui:define name="divMainPublic">

    <h:form enctype="multipart/form-data">
        <p:fileUpload fileUploadListener="#{testeUpload.handleFileUpload}" mode="advanced" sizeLimit="51380224" />
    </h:form>

</ui:define>

我正在使用; commons-fileupload-1.2.2 commons-io-2.3 primefaces-4.0
jsf 2.2

上传的文件保存在
D
驱动器中。它起作用了

使用以下代码更新
handleFileUpload
方法

public void handleFileUpload(FileUploadEvent event) {
    try {
        UploadedFile file = event.getFile();
        InputStream inputStream = file.getInputstream();
        OutputStream outputStream = new FileOutputStream("D:/"+ file.getFileName());
        byte[] bytes = file.getContents();
        int read = 0;
        while ((read = inputStream.read(bytes)) != -1 ) {
            outputStream.write(bytes, 0, read);
        }
        inputStream.close();
        outputStream.flush();
        outputStream.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

我会在两年后给你答案。。。英雄联盟 更改web服务器中的“最大帖子大小”。 如果您使用玻璃鱼: 配置->网络配置->列表器->http->最大帖子大小

这个问题困扰了我三个月