FileUpload Primefaces + Permissões (RESOLVIDO)

Ola galera, é seguinte. Criei uma telinha pra fazer o upload de uma imagem e exibi-la. Estou usando fileupload do primefaces, tomcat. Consigo fazer o upload (serviço já esta hospedado), porem quando quero pegar a imagem que ja esta no servidor, ela não aparece devido a permissão do arquivo que esta 640 (sem permissão para leitura publica, uso o FILEZZILA para FTP) deveria ser 644 que é a permissão para visualizar.

aqui o XHTML

 <p:fileUpload   fileUploadListener="#{dicaController.upload}"  
                            label="" uploadLabel="" cancelLabel="" 
                            mode="advanced" dragDropSupport="false"  allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>

aqui o listener que o componente chama


public void upload(FileUploadEvent event) {
        try {
            //ANEXAR ARQUIVO                         
            String caminho = "/home/saudeesuporte/imagens.saudeesuporte.com.br/dicas/" + event.getFile().
            byte[] conteudo = event.getFile().getContents();
            FileOutputStream fos = new FileOutputStream(caminho);
            fos.write(conteudo);
            fos.close();
            FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage(FacesMessage.SEVERITY_INFO, "Enviado com Sucesso!!", ""));

        } catch (Exception e) {
            e.printStackTrace();
            FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage(FacesMessage.SEVERITY_INFO, "Erro ao carregar arquivo!!", ""));
        }
    }

ja tentei fazer assim setando o file.setReadable mas nao funciona.

public void upload_alternativo(FileUploadEvent event) {
   
     try {

            String realPath = FacesContext.getCurrentInstance()
                    .getExternalContext().getRealPath("/");
            System.out.println(realPath);

            File file = new File("" + "/home/saudeesuporte/imagens.saudeesuporte.com.br/dicas", event.getFile().getFileName());
            System.out.println(file.getCanonicalPath());
            file.setReadable(true, false);
            file.setExecutable(false, false);
            file.setWritable(false, false);
            FileOutputStream out = new FileOutputStream(file);
            out.write(event.getFile().getContents());
            out.close();

            FacesContext.getCurrentInstance().addMessage(
                    null, new FacesMessage("Upload completo "
                            + "O arquivo " + event.getFile().getFileName() + " foi carregado!"));
            //preparar para salvar no banco o caminho da imagem
            dica.setImageDestacada("http://imagens.saudeesuporte.com.br/dicas/" + event.getFile().getFileName());

        } catch (IOException e) {
            e.printStackTrace();
            FacesContext.getCurrentInstance().addMessage(
                    null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro", e.getMessage()));
        }

    }

Alguem tem alguma solução para os arquivos ja entrarei com a permissão liberada?

se for linux vc já deu permissão na pasta? Obs.: no filezilla tem uma opção para da permissão, é só aperta botão direito na pasta e ir em permissões

dei sim, clico com o botão direito e marco tudo ficando 777, mas quando faço o upload, o arquivo que entrou fica 640

Vê se funciona assim depois de gravado o arquivo:

Set<PosixFilePermission> perms = new HashSet<>();
perms.add(PosixFilePermission.OWNER_READ);
perms.add(PosixFilePermission.OWNER_WRITE);
perms.add(PosixFilePermission.OWNER_EXECUTE);

perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.OTHERS_WRITE);
perms.add(PosixFilePermission.OWNER_EXECUTE);

perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.GROUP_WRITE);
perms.add(PosixFilePermission.GROUP_EXECUTE);

Files.setPosixFilePermissions(arquivo.toPath(), perms);

sucesso irmao. vlw muito obrigado.
só corrigi a linha

perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.OTHERS_WRITE);
perms.add(PosixFilePermission.OWNER_EXECUTE); //CORRIGI AQUI******************
1 curtida