Quando faço o upload das fotos usando FileUpload não consigo excluir.
Uso esse StremedContent para ficar setando na lista contentNova toda vez que o método é chamado pelo FileUpload, o problema é quando excluo some apenas do (dataGrid) e não é decrementado da lista contentNova, com isso nos métodos salvarFotoNova() e criaArquivo() são escrita na pasta do servidor todas fotos que existe na lista contentNova incluido as que tentei excluir.
HTML
<div class="col-md-6">
<p:outputLabel value="Foto Atual " style="font-size: 17px;" />
<div class="row">
<p:fileUpload label="Anexar Foto"
fileUploadListener="#{ordemServicoMB.uploadNova}" auto="true"
mode="advanced" sizeLimit="3145728"
multiple="true" update="gridfotosNova" allowTypes="/(\.|\/)(gif|jpg|png|JPG|bmp|jpeg)$/" />
</div>
<p:dataGrid id="gridfotosNova" value="#{ordemServicoMB.contentNova}" var="linfotosNova" columns="1" emptyMessage="">
<p:column>
<p:graphicImage value="#{linfotosNova.stream}" />
</p:column>
<p:column>
<h:outputText value="#{linfotosNova.name}" />
</p:column>
</p:dataGrid>
</div>
JAVA
private List<StreamedContent> contentNova = new ArrayList<>();
public void uploadNova(FileUploadEvent evento) {
try {
contentNova.add(new DefaultStreamedContent(evento.getFile().getInputstream(), evento.getFile().getFileName()));
} catch (IOException erro) {
erro.printStackTrace();
FacesUtils.showMessage(3, "Falha em carregar imagem");
}
}
public void salvarFotoNova() {
for (StreamedContent s : contentNova) {
String nomeArquivo = s.getContentType();
criaArquivo(nomeArquivo.getBytes(), nomeArquivo);
}
}
public void criaArquivo(byte[] bytes, String arquivo) {
try {
FileOutputStream fos;
fos = new FileOutputStream(arquivo);
fos.write(bytes);
fos.close();
} catch (Exception ex) {
ex.printStackTrace();
FacesUtils.showMessage(3, "Falha ao escrever imagem");
}
}