winters
Fevereiro 24, 2011, 1:00pm
#1
Olá a todos… Muito boa tarde…
Pessoal estou com um pequeno problema e dúvida aqui.
Tenho o nome de imagens gravado num db e preciso pegar o nome e extensão das mesmas, pois quando é feito o upload de imagens ele mantem a imagem e cria uma thumb. Portanto, na hora que exibe as fotos não quero carregar as fotos 640x480 com width=120 e height=90, quero usar as thumbs.
Lembrando que o nome do arquivo pode ser qualquer um, obvio desde que tenha extensão .jpg, .JPG, .png, .gif Vejam o exemplo.
DSC00001.JPG
DSC00002.jpg
TestedeFotoComPHP.gif
gujForum.png
Em PHP eu consigo independentemente do tamanho de caracteres do nome do arquivo pegar apenas o “.JPG, .jpg, .gif e .png”.
o código pra isso é assim.
$idFileThumb = substr($escrever['file'],0, -4)."_thumb".substr($escrever['file'],-4);
Ele vai me retornar as thumbs de cada imagem. DSC00001_thumb.JPG
Ja tentei fazer isso de todos os jeitos usando o substring, mais foram tentativas frustradas!
O que vocês me aconselham a fazer?
Aguardo feedback.
Posta o código ai, pra gente dá uma olhada.
winters
Fevereiro 24, 2011, 1:34pm
#3
Code em PHP
$idFileThumb = substr($escrever['file'],0, -4)."_thumb".substr($escrever['file'],-4);
Esse código acima faz o seguinte.
Extrai do campo FILE de uma table "nome do arquivo - a extensão + _thumb + extrai os últimos 4 caracteres (.jpg)
|DSC00001|_thumb|.JPG|
Em JSP não consigo fazer isso com o substring, pois ele não aceita, por exemplo, condição negativa (-4 como no PHP).
out.print("<a href='../../sisnews/genephotos/uploads/"+rsDB.getString("FILE")+"' border='0' rel='example4' title='"+rsDB.getString("CAPTION")+"'>");
out.print("<img src='../../sisnews/genephotos/uploads/"+rsDB.getString("FILE")+"' border='0' width='125' height='95' class='imgCapa2' title='"+rsDB.getString("CAPTION")+"' /></a>");
Conseguiu entender?
O que devo fazer pra ter o mesmo resultado em java.
Agradeço desde já.
Você está usando scriptlet??
Ao invés de:
rsDB.getString("FILE")
Use
rsDB.getString("FILE").substring(0, (rsDB.getString("FILE").length() - 4) + "_thumb"
kra, tenta usar, no lugar de -4, a funcao lenght() e subtrai dela 4, tipo assim:
String teste = "Teste substring";
String nome = teste.subString(0, teste.length() - 4);
Ou então pega o index do ponto e faz um substring… Olha:
public class SeparaExtensao{
public static void main(String args[]){
String arquivo = "algum_arquivo.ext";
String extensao = arquivo.substring(arquivo.lastIndexOf(".")+1);
System.out.println(extensao);
}
}
CJDJ
Fevereiro 24, 2011, 2:14pm
#7
Cara,
Esquece scriptlet. JSTL é melhor, mais fácil e mais adequado:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri= "http://java.sun.com/jsp/jstl/functions" prefix= "fn"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Testando substring...</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<c:set var="imagem" value="foto.jpg" />
<c:out value="${fn:substringBefore(imagem, '.')}_thumb.${fn:substringAfter(imagem, '.')}" />
<!-- Saida: foto_thumb.jpg -->
</body>
</html>
[]s
winters
Fevereiro 24, 2011, 3:12pm
#8
Valeuuuuuu galeraaaaaaa
Deu certinho aqui, usei LastIndexOf.
Muito obrigado mesmo!
Grande abraço a todos