Como gravar imagem no Db e recuperar a partir de uma página JSP ??? se tiverem um exemplo podem me mandar…
Obrigada. BJS…
Como gravar imagem no Db e recuperar a partir de uma página JSP ??? se tiverem um exemplo podem me mandar…
Obrigada. BJS…
Veja o site: www.javazoom.com, nele tem componentes de download e upload, quando você baixa os arquivos para instalação, eles já vem com alguns exemplos.
No caso do upload você pode grava-lo em memória, banco de dados, arquivo zip, ou no próprio disco.
Para upload, realmente você vai precisar de um componente apropriado.
Para gravar na base, você pode utilizar o tipo Blob associado a um PreparedStatement, você precisa conhecer manipulação de Stream.
Para recuperar da base, novamente você vai usar Blob e ResultSet.
Utilizei SQL Server para um exemplo que fiz a um tempo atrás:
Para gravar:
package jdbc;
import java.sql.*;
import java.io.*;
public class BlobInsert
{
public static void main(String[] args)
{
try
{
if (args.length < 1)
{
System.out.println("Escolha o nome do arquivo a ingerir");
return;
}
File fileDesc = new File(args[0]);
InputStream file = new FileInputStream(fileDesc);
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection
("jdbc:microsoft:sqlserver://direct_w2k:1433;User=sa;Password=;DatabaseName=dbTeste;Database=dbTeste");
PreparedStatement ps = conn.prepareStatement("insert into Anexo (filename, content) values (?, ?)");
ps.setString(1, args[0]);
ps.setBinaryStream(2, file, (int) fileDesc.length());
ps.executeUpdate();
System.out.println("File saved!");
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
}
Para ler do banco:
package jdbc;
import java.sql.*;
import java.io.*;
public class BlobRead
{
public static void main(String[] args)
{
try
{
if (args.length < 1)
{
System.out.println("Escolha o id do arquivo a ler");
return;
}
byte[] buffer = new byte[32*1024]; // Buffer 32 kb
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection
("jdbc:microsoft:sqlserver://direct_w2k:1433;User=sa;Password=;DatabaseName=dbTeste;Database=dbTeste");
System.out.println("Connection Ok!");
PreparedStatement ps = conn.prepareStatement("select id, filename, content from Anexo where id = " + args[0]);
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
System.out.println("ID not found!");
return;
}
String fileName = rs.getString(2);
InputStream fileBase = rs.getBinaryStream(3);
OutputStream fileOut = new FileOutputStream(fileName + ".db");
int bytesLidos = fileBase.read(buffer);
while (bytesLidos > 0)
{
fileOut.write(buffer, 0, bytesLidos);
bytesLidos = fileBase.read(buffer);
}
System.out.println("File extracted!");
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
}
Lembre-se que o forum do Guj troca o s de Microsoft por $ (pessoa, essa brincadeira atrapalhou meu código
). Então se você copiar e colar este exemplo, ele não vai funcionar. É só corrigir onde há Microsoft.
Se precisar de um componente de upload, email-me.
Boa sorte.