Caminho da imagem ao fazer upload no ubuntu

boas pessoal, seguinte: Fiz o upload de imagens e ele funciona muito bem, mais eu to preocupado é com a forma como eu guardo o caminho da imagem na base de dados, o meu caminho está da seguinte forma:

 String caminho = "/home/vanilson/NetBeansProjects/nomeDoProjecto/img/usuarios/clientes/"

Desse jeito se eu pegar no projecto e rodar em um outro pc vou ter problemas com esse caminho, porque está a indicar a minha pasta pessoal no caminho. O que quero saber é se existe alguma forma de resumir esse caminho, ja tentei colocar apenas “/img/usuarios/clientes/” mais desse jeito não funciona.

Já tentou simplesmente “./img/usuarios/clientes” ?

O “.” seria o caminho atual da aplicação e ele iria procurar a pasta /img/ que estaria adiante.

brunocia2000, é exactamente isto que preciso mais colocando o ponto retorno um erro a dizer que não é uma localização valida…

Entendi. O que você está usando exatamente no projeto? JSP, Java Swing?

E você tá fazendo um sistema pra fazer upload de fotos dos clientes, e exibir em uma página?

Assim posso te ajudar melhor.

Antigamente eu fazia muitos Applets em Java, hoje trabalho mais com C++ / Flash. Eu usava o seguinte pra pegar o caminho da Applet e as pastas adiante dela:

import java.net.URL; // importe este package

E na string, chame este método.

getCodeBase();

Exemplo:

caminho = getCodeBase() + “/img/usuarios/clientes/”;

No linux você pode pegar o diretório HOME de um usuário usando ~/
Por exemplo:

String caminho = "~/NetBeansProjects/nomeDoProjecto/img/usuarios/clientes/"  

Isso na sua máquina equivale a:

String caminho = "/home/vanilson/NetBeansProjects/nomeDoProjecto/img/usuarios/clientes/"  

Outras opções seriam configurar uma variável de ambiente apontando para o diretório correto e essa variável seria ajustada na instalação do seu programa ou ainda usar a pasta /tmp, que é específica para armazenar arquivos temporários.

Estou a usar jsp

Sim

Matheuslmota, segui a tua dica mais na mesma o erro continua.

[quote]
~/NetBeansProjects/nomeDoProjecto/img/usuarios/clientes/null (No such file or directory)

[code]

Se você está trabalhando com Servlets, basta usar o seguinte método para pegar o arquivo físico da pasta que o .war está implantada:

config.getServletContext().getRealPath(File.separator);

ela irá retornar o caminho físico, independente do computador que ela estiver, por exemplo:

C:\arquivos de programas\apache tomcat\webapps\nomeProjeto

Caso você esteja rodando em ambiente de desenvolvimento, ele irá retornar a pasta WAR do seu projeto no disco.

O método acima citado só é disponível(que eu saiba) dentro de um servlet.

Você pode criar um servlet que seja chamado automaticamente quando o projeto for iniciado e mudar uma variável estática que sirva apenas para lembrar o caminho físico do projeto.