Boa tarde, bom vou explicar tudo desde o começo, eu precisava fazer um codigo q não permitisse ser anexado arquivos (.exe) nem mesmo ele estando compactado com zip ou rar, até ai eu fiz mais a pegada é o seguinte se o usuario pega um (.exe) zipa ele e depois coloca esse arquivo zipado dentro de outro zip ai meu codigo não axa.
ai vai minhas linhas de codigo para vc's darem uma olhada
private boolean validarArquivo(byte[] array, String fileName){
String ext = fileName.contains(".")? fileName.substring(fileName.lastIndexOf(".")+1):"";
if(ext.equalsIgnoreCase("exe")){
addErrorMsg("Arquivo não anexado ao catálogo. O sistema não permite que arquivos com extensão (.exe) seja anexado.");
return false;
}
if(ext.equalsIgnoreCase("zip")){//caso arquivo compactado com WinZip
try{
File f = new File(fileName);
OutputStream os = new FileOutputStream(f);
os.write(array);
os.flush();
ZipFile zf = new ZipFile(f);
Enumeration entries = zf.entries();
while(entries.hasMoreElements()){
String str = ((ZipEntry)entries.nextElement()).getName();
String extensao = str.contains(".") ? str.substring(str.lastIndexOf(".")+1):"";
if(extensao.equalsIgnoreCase("exe")){
addErrorMsg("Arquivo não anexado ao catálogo. O sistema não permite que arquivos com extensão (.exe) seja anexado.");
return false;
}
if(extensao.equalsIgnoreCase("zip")){
insertionSort(array, str);
}
}
f.delete();
}catch(FileNotFoundException e){
addErrorMsg("Arquivo não encontrado.");
}
catch(IOException e){
addErrorMsg("Erro ao ler o arquivo.");
e.printStackTrace();
}
}
else if(ext.equalsIgnoreCase("rar"))//caso arquivo compactado com WinRar
{
try {
File f = new File(fileName);
OutputStream os = new FileOutputStream(f);
os.write(array);
os.flush();
Archive archive = new Archive(f);
for (FileHeader fileHeader : archive.getFileHeaders()){
String str = fileHeader.getFileNameString();
String extensao = str.contains(".") ? str.substring(str.lastIndexOf(".")+1):"";
if(extensao.equalsIgnoreCase("exe")){
addErrorMsg("Arquivo não anexado ao catálogo. O sistema não permite que arquivos com extensão (.exe) seja anexado.");
return false;
}
}
f.delete();
}
catch (RarException e) {
e.printStackTrace();
} catch (IOException e) {
addErrorMsg("Erro ao ler o arquivo.");
e.printStackTrace();
}
}
return true;
}
axo q seria mais ou menos a mesma coisa ou seja esse metodo chamando ele mesmo, mais não sei como fazer isso, alguem tem alguma idéia.
obrigado.
