Interface UploadedFile do VRaptor

Pessoal,

Tenho um método para verificar o ContentType:

	public boolean valideContentType(UploadedFile document) {
		String fileType = document.getContentType();

		return fileType.equals("application/pdf") || fileType.equals("application/msword") 
			|| fileType.equals("application/zip") || fileType.equals("application/vnd.ms-excel") 
			|| fileType.equals("image/gif") || fileType.equals("image/jpeg")
			|| fileType.equals("application/vnd.openxmlformats-officedocument.wordprocessingml.document")
			|| fileType.equals("application/x-rar-compressed");

	}

Consigo enviar qualquer um desses arquivos da minha máquina, mas alguns clientes não!
Alguém já passou por isso ou sabe por que só alguns não conseguem enviar os arquivos?

Olá lfcdtv,

primeiro vou sugerir uma Refatoração:

return Arrays.asList("application/pdf", 
                   "application/msword", 
                   "application/zip", 
                   "application/vnd.ms-excel", 
                   "image/gif", 
                   "image/jpeg",
                   "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
                   "application/x-rar-compressed").contains(fileType);

talvez extrair esse Arrays.asList inteiro por uma constante (SUPPORTED_CONTENT_TYPES)

as pessoas não conseguem enviar porque dá erro de validação?
tenta logar qual foi o contentType mandado, ou inclua o content-type na mensagem de validação.

pode ser que o browser esteja mandando o content type errado, ou simplesmente não está mandando,
daí talvez seja interessante verificar a extensão do arquivo também.

[]'s

ok Lucas, vou seguir tuas sugestões.

Aproveitando o Tópico tenho uma uri que retorna um download de um determinado diretório
e não estou conseguindo retornar arquivo do tipo Zip. abaixo o código.

@Get
	@Path("/oportunidade/download")
	public Download downloadOportunidades(Integer id_Oportunidade, Integer id_Historico) {
		String filename="";
		File file = null;
		String contentType = null;
		
		OportunidadeHistorico getHistorico = new OportunidadeHistorico();
		getHistorico.setId_Historico(id_Historico);
		getHistorico.setId_Oportunidade(id_Oportunidade);
		
		getHistorico = opt.getHistoricoById(getHistorico);
		
		
		String path = PropertiesUtil.getProperty("oportunidades.folder");
		filename = getHistorico.getPt_Arquivo();

		int start = getHistorico.getPt_Arquivo().lastIndexOf(".");
		String extensao = (start > 0) ? getHistorico.getPt_Arquivo().substring(start) : ".doc";

		if (extensao.equals(".pdf"))
			contentType = "application/pdf";
		else if (extensao.equals(".doc"))
			contentType = "application/doc";
		else if(extensao.equals(".docx"))
			contentType = "application/docx";
		else if (extensao.equals(".xps"))
			contentType = "application/text";
		else if(extensao.equals(".txt"))
			contentType = "application/text";
		else if(extensao.equals(".zip"))
			contentType = "application/x-zip";

		file = new File(path  + getHistorico.getPt_Arquivo());
		
		//return new FileDownload(file, contentType);
		
		
		return new FileDownload(file, contentType, filename, true);
	}

o que acontece?

Então quando é para retornar o download de um arquivo .zip ele retorna um arquivo do “oct-stream” e não zip.
tenta fazer um teste.

o content-type está sendo setado corretamente?

a partir de um certo tamanho o container deve mandar automaticamente o arquivo por partes, por isso o octet-stream. isso afeta o download no browser?

sim está sendo setado corretamento ,quando faço upload o arquivo sobe normal , mas afeta o download…
Ele retorna um arquivo do tipo “octet-stream” e não zip, depois do download o arquivo fica sem extensão para abrir
você já passou algo parecido com arquivo zip? tenta fazer um teste.

o filename que vc está colocando no FileDownload tem o .zip no final?

isso é bastante importante pro browser descobrir o que fazer também