Ola pessoal , estou implementando um Servlet que fará Upload de arquivos estou usando API FileUpload mas estou passando por um problema cômico
O diretorio que quero abrir é abcd
O interessante que faço uma checagem se o dir existe e se ele não está habilitado para escrita , fiz ate um teste deletei o dir abcd fiz a request para “upar” o arquivo ele criou o dir abcd mas ao tentar abrir o abcd ele lança essa Exception abaixo:
ja mudei os atributos do diretorio para escrita ;;; meu servidor é Windows
Não entendi muito bem o que seria se o diretorio rather than a regular file
E no final ele diz que o arquivo não pode ser aberto por algum outro motivo
Você pode pegar dados do diretório como por exemplo listar os arquivos que existem dentro dele ex :
File r = new File("/dir/dir/dir");
File a[] = r.listFiles(); // Retorna a lista de arquivos do diretório
Por que você abriria um diretório ?
D
davidbuzatto
Posta o código ai
Eu usei a FileUpload sexta-feira e funcionou normal. Será que cc está usando um diretório onde deve ser um arquivo?
Até mais!
R
ramilani12
A forma que estou fazendo:
// TODO Auto-generated method stubbooleanisMultipart=ServletFileUpload.isMultipartContent(request);if(isMultipart){// Create a factory for disk-based file itemsFileItemFactoryfactory=newDiskFileItemFactory();// Set factory constraints//factory.setSizeThreshold(1000);// Create Temp Repository//File fileTemp = new File("c:\\Temp");//factory.setRepository(fileTemp);// Create a new file upload handlerServletFileUploadupload=newServletFileUpload(factory);// Set overall request size constraint in bytesupload.setSizeMax(400000);// Parse the requesttry{List/* FileItem */items=upload.parseRequest(request);Iteratorit=items.iterator();while(it.hasNext()){FileItemitem=(FileItem)it.next();if(!item.isFormField()){Stringcam=this.getServletContext().getRealPath("rh")+"\\stockoptions";System.out.println("Cam "+cam);Filefile=newFile(cam);if(!file.exists())file.mkdir();if(file.exists()){if(file.isDirectory()){if(file.canWrite()){item.write(file);}elseSystem.out.println("O arquivo nao pode ser escrito");}}elseSystem.out.println("O diretorio nao existe");}}
Então objeto cam = recebe o diretorio no servidor onde será armazenado o arquivo no momento que chamo item.write(file) ele lança a Exception
Estou usando o Tomcat 3.2 tentei colocar um policy no tomcat.plicy dizendo que nesse diretorio tem a permissao de escrita mas mesmo assim não funcionou …
Ps: Desprezem os dois posts abaixo …
R
ramilani12
R
ramilani12
D
davidbuzatto
Estou indo para o serviço, as 12:30 eu te mando o meu código e leio o seu com mais calma.
Abraço!
D
davidbuzatto
Olha, meu código é quase idêntico ao seu, mas funcionou sem problemas.
Dê uma olhada. Ele no caso obtém todos os outros campos do formulário que não são input file e cria o nome do arquivo e depois pega os dois últimos campos do formulário que são os input files.
Ola David qual versao tomcat que vc esta utilizando?
Meu codigo nao tem nada de diferente do seu …
D
davidbuzatto
Realmente, como falei o código não tem diferença… Uso o tomcat 5.5
Até mais!
R
ramilani12
Cara resolvi meu problema acho que no momento que executava o item.write(repositorio) ele confundia que o repositorio era uma arquivo por isso negava o acesso;
A solução