Olá, estou desenvolvendo uma pequena webapp e tenho um serlvet que trata todas as requisições num uso mea boca do mvc. Bom, agora tenho que fazer um esquema de upload de um arquivo. Decidi usar essa lib. Acontece que, para recuperar os dados do form onde o arquivo é escolhido para o upload, tenho que usar a classe MultipartRequest que, quando instanciada, faz de cara o upload e renomeia conforme eu determinar num FileRenamePolicy (interface tambem do pacote).
O problema: como uso apenas um servlet como controlador, nem sempre terei que usar o MultipartRequest. No caso de um login por exemplo, recuperarei tudo normalmente. Daí, dei umas fuçadas e ao que parece, usar um filtro seria o recomendado, eu criaria um filtro qualquer que decidiria para onde ir de acordo com o content-type do request. O ruim disso: adeus serlvet controller.
Enfim, o que vcs recomendam? Usar outra lib para o upload? Criar um filtro mesmo? Só não vale dizer para ir estudar algum framework que implemente mvc… :lol: agora não dá mesmo…
Em relacao ao teu problema, voce pode criar uma classe auxiliar, tipo, MeuHttpServletRequest, que verifica se eh multipart ou nao, e usar ele no controller… ( claro que somente assim ele fica meio inutil dependendo da forma como vc fazer, mas da para bolar umas coisas interessantes, como trocar valores do request ou adicionar, por exemplo ).
Nao entendi pq vc disse que perde o controlador… vc pode diretamente verifica se eh multipart, ou sempre usar a classe que tambem processa os file uploads… claro que tem um pequeno overhead a mais, mas eh uma solucao rapida.
que eh muito melhor e tem mais recursos.
[/quote]
Valeu Rafael, vou dar uma olhada. O cos tá meio chato mesmo e estava usando porque ele tava me permitindo fazer o que eu queria, o upload.
Por essa logica, a classe MeuHttpServletRequest não vai funcionar como um filtro em si? Ou vc está falando apenas em fazer algo como:
[quote=“Rafael Steil”]
Nao entendi pq vc disse que perde o controlador… vc pode diretamente verifica se eh multipart, ou sempre usar a classe que tambem processa os file uploads… claro que tem um pequeno overhead a mais, mas eh uma solucao rapida.
Rafael[/quote]
Eu achava que fazer um filtro iria complicar porque, pelo que estava imaginando, eu criaria um servlet para tratar outras requisições e um apenas para fazer o upload.
e usar esse objeto “req” no sistema… Assim voce tem acesso aos arquivos de upload e aos dados da requisicao normal…
Voce pode ainda colocar uns metodo adicionais, como “getUploadedFile”, por exemplo, para simplificar a tua vida ( ja que, geralmente, voce tem que fazer uns casts ou verificar o tipo de conteudo que esta vindo na variavel atual do request )…
Veja que la tem um if() para ver se eh multipart, e entao eu faco um tratamento especial… ha ainda um outro metodo, no final da classe, para me ajudar a pegar conteudo nao-string.