Dae galera.. eu estou utilizando o FileUpload da jakarta.. só que tem uma particularidade...eu fiz algo parecido com o anexar arquivos do gmail, então eu não tenho um campo do tipo file e sim uma lista de vários arquivos que eu quero enviar ao mesmo tempo para o servidor...
com isso eu não consigo usar o List files = upload.parseRequest( request ); e FileItem fileItem = ( FileItem ) files.get( i ); para pegar os arquivos... eu tenho eles em um ArrayList.. alguem tem alguma ideia de como fazer isso? Teria alguma forma de eu converter ou algum método que eu converta cada item da minha lista para um FileItem ou algo do genero..? Abraços!
Segue o esboço da minha classe..
public void salvaArquivo( HttpServletRequest request, HttpServletResponse response, String path )
throws ServletException,IOException {
// boolean ehMultipart = FileUpload.isMultipartContent( request );
// Verifica se formulário é multipart
//if ( ehMultipart ) {
// A servlet.. serve pra fazer upload usando servlet.
// Esse Disk... diz como os arquivos serão tratados( armazenados )
ServletFileUpload upload = new ServletFileUpload( new DiskFileItemFactory());
String caminhoCompleto = request.getParameter("caminhoArquivoCompleto");
String caminhoToken = "";
List files = new ArrayList();
while( caminhoCompleto.indexOf("[:]") != -1 ) {
caminhoToken = caminhoCompleto.substring(0, caminhoCompleto.indexOf("[:]"));
files.add(caminhoToken);
caminhoCompleto = caminhoCompleto.substring(caminhoCompleto.indexOf("[:]")+3);
}
// Como é uma lista, usa-se um for para manipular a lista
for ( int i = 0; i < files.size(); i++ ) {
ALDebug.print("--- Entrou "+files.size());
// Pegando cada objeto em separado( item )
//FileItem fileItem = ( FileItem ) files.get( i );
//ALDebug.print("FileItem> "+fileItem.getFieldName());
// Para o servidor vai( dependendo da quantidade de arquivos ) um conjunto de arquivos( formulários e arquivos ),
//Então tem que verificar se é um arquivo ou dados do formulário.
// Se esse item tiver um nome, ele é um arquivo, se não, é um formulário
String nomeArquivo = ( String ) files.get(i);
try {
// gravando com nome original, verifica a posição da última barra pra pegar o nome do arquivo
// O + 1 é pra começar a pegar do nome do arquivo e não a barra
if ( nomeArquivo.lastIndexOf( "\\" ) != -1 ) {
nomeArquivo = nomeArquivo.substring( nomeArquivo.lastIndexOf( "\\" ) + 1 );
}
// fileItem.write( new File( "C:\\Temp\\" + nomeArquivo ));
try {
File file = new File("C:\\Temp\\" + nomeArquivo);
// Create file if it does not exist
boolean success = file.createNewFile();
if (success) {
// File did not exist and was created
} else {
// File already exists
}
} catch (IOException e) {
}
} catch( Exception e ) {
throw new ServletException(e.getMessage() + " :: Erro: Página não pode ser acessada diretamente!" );
}
}
//}
}