Olha só galera.. Estou fazendo upload de arquivos usando IO.. dae consegui de certa forma, certa forma porque na minha máquina eu consigo fazer o upload mas de outra máquina não.. ele diz que o sistema não pode encontrar o caminho especificado!
Ah... no meu caso eu não conseguir usar o FileUpload da Jakarta porque eu fiz uma tela estilo o anexar do gmail, dae ele guarda uma lista de arquivos... com isso não achei nada no FileUpload que me ajudasse nisso...porque ele procura por um campo do tipo file.. e no meu caso os arquivos virão de uma lista!
Segue o código:
Código:
public void salvaArquivo( HttpServletRequest request, HttpServletResponse response, String path )
throws ServletException,IOException {
// Guarda a definição se é multipart ou não,isso vindo da requisição
// 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);
ALDebug.print("--- "+caminhoToken);
}
// Como é uma lista, usa-se um for para manipular a lista
for ( int i = 0; i < files.size(); i++ ) {
ALDebug.print("--- Entrou "+files.size());
// 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 );
}
// Cria o diretório caso ele não exista
File diretorio = new File("C:\\Temp\\");
if (!diretorio.exists()){
ALDebug.print("");
//diretorio.mkdir();
}
File file = new File(diretorio, nomeArquivo);
FileOutputStream output = new FileOutputStream(file);
FileInputStream is = new FileInputStream(( String )files.get(i));
byte[] buffer = new byte[is.available()];
int nLidos;
while ((nLidos = is.read(buffer)) >= 0) {
output.write(buffer, 0, nLidos);
}
output.flush();
output.close();
} catch( Exception e ) {
throw new ServletException(e.getMessage() + " :: Erro: Página não pode ser acessada diretamente!" );
}
}
Ah.. e tem outra coisa que ocorreu quando tentei fazer o upload do arquivo de outra máquina na rede.. os ícones do dos programas que estão no desktop ele copia para a minha máquina!!
