JSF 2 - Como fazer upload sem usar bibliotecas?
Cara, quando precisei fazer uma aplicação com JSF e suporte a upload de arquivo as opções que achei disponiveis foram conjuntos de componentes ou cria um Servlet.
Optei por usar um conjunto de componentes (PrimeFaces) por ser mais prático e fácil.
Da uma pesquisada sobre Servlet que você pode encontrar como fazer isso que está querendo.
Abraços…
Só com Servlet mesmo, eu tambem usava o primeFaces mas ele não funciona em HTTPS, então eu fiz assim:
<form action="#{facesContext.externalContext.requestContextPath}/panel/uploadServlet.do" enctype="multipart/form-data" method="post">
<input type="file" name="file1" size="50" accept="text/xml"/><br/>
<input type="submit" value="Reprocessar"/>
</form>
e cria uma Servlet (vou colocar aqui só a parte que te interessa):
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
fileItemFactory.setSizeThreshold(1 * 1024 * 1024); //1 MB
ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
uploadHandler.setSizeMax(1024 * 1024);
try {
List items = uploadHandler.parseRequest(request);
Iterator itr = items.iterator();
byte[] bs = null;
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (!item.isFormField()) {
int size = item.getInputStream().available();
bs = new byte[size];
item.getInputStream().read(bs);
}
}
//Pronto aqui seu bs está carregado com os bytes do arquivo que foi feito upload
Valeu funcionou…