Interface UploadedFile do VRaptor

8 respostas
L

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?

8 Respostas

Lucas_Cavalcanti

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

L

ok Lucas, vou seguir tuas sugestões.

H

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);
	}
Lucas_Cavalcanti

o que acontece?

H

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.

Lucas_Cavalcanti

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?

H

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.

Lucas_Cavalcanti

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

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

Criado 28 de março de 2011
Ultima resposta 13 de abr. de 2011
Respostas 8
Participantes 3