1.1.14.5.1.1.1. fejezet, fileUpload
Beküldte pzoli - 2013, április 27 - 12:54du
Ha több értéket is küldünk a fájl feltöltés form-ban, a beviteli mezők értékei nem kerülnek feldolgozásra, ha a form mezőket nem dolgozza fel a szerver. Ennek elkerülésére alkalmazzuk a fileUpload process="@form" paraméterét:
<h:form id="fileUploadForm" enctype="multipart/form-data"> <h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5"> <h:outputText value="Feltöltött fájl típus: " /> <p:selectOneMenu id="contentType" value="#{fileUploadController.contentType}" disabled="#{not userFileInfoManager.isPasswordAccepted()}"> <f:selectItem itemLabel="jpg kép" itemValue="image/jpg" /> <f:selectItem itemLabel="szöveg fájl" itemValue="text/plain" /> <f:selectItem itemLabel="html fájl" itemValue="text/html" /> <f:selectItem itemLabel="video fájl" itemValue="video/mpeg" /> <f:selectItem itemLabel="mp3 zene" itemValue="audio/mp3" /> <f:selectItem itemLabel="Excel fájl" itemValue="application/vnd.ms-excel" /> <f:selectItem itemLabel="Word fájl" itemValue="application/vnd.ms-word" /> <f:selectItem itemLabel="egyéb" itemValue="application/octet-stream" /> </p:selectOneMenu> </h:panelGrid> <p:fileUpload id="fileUploader" fileUploadListener="#{fileUploadController.upload}" disabled="#{not userFileInfoManager.isPasswordAccepted()}" process="@form" label="Választás" uploadLabel="Feltöltés" cancelLabel="Mégsem" invalidSizeMessage="A file túl nagy (max:#{fileUploadController.sizeLimit} byte)" invalidFileMessage="Ez a fájltípus nem megengedett" ajax="true" multiple="false" mode="advenced" auto="true" update=":growl,:fileListForm:dataPanel,:fileUploadForm" sizeLimit="#{fileUploadController.getSizeLimit()}" locale="hu" /> </h:form>
Szerver oldalon pedig állítsuk a feldolgozást INVOKE_APPLICATION fázisba, majd az event.queue() metódussal kezdeményezzük a form újra értékelését:
public void upload(FileUploadEvent event) { FacesMessage msg = null; if (!PhaseId.INVOKE_APPLICATION.equals(event.getPhaseId())) { event.setPhaseId(PhaseId.INVOKE_APPLICATION); event.queue(); } else { InputStream fIn = event.getFile().getInputstream(); ... fIn.close(); UserFileInfo fileInfo = new UserFileInfo(); fileInfo.setContentType(getContentType()); fileInfo.setSize(event.getFile().getSize()); } }
web.xml feltöltés vezérlő beállítás, ha saját parser-rel dolgozzuk fel az üzenetet, vagy utf-8 fájlneveket használunk:
<context-param> <param-name>primefaces.UPLOADER</param-name> <param-value>commons</param-value> </context-param>
A fájl maximális méretét befolyásolhatja még a webszerver beállítása. Wildfly 10 esetén ez a max-post-size:
<http-listener name="default" max-post-size="25485760" redirect-socket="https" socket-binding="http"/>
Egy leírás SMB fájlrendszer elérésére itt.
Csatolmány | Méret |
---|---|
Homework4FileUpload.zip | 7.59 MB |
- A hozzászóláshoz be kell jelentkezni