Gravar arquivo no ORACLE

2 respostas
F

Galera,
Preciso fazer o upLoad de um arquivo da maquina do cliente para depois gravá-lo em um banco ORACLE aqui no servidor, mas estou com os seguintes problemas:

1°) Quando tento inserir no form um campo do tipo FormFile recebo o erro “argument type mismatch” e tenho certeza de que é por causa dele pois se o retiro do .jsp o erro some e a aplicação “funciona”;

2°) Se conseguir buscar o arquivo como deverei proceder para gravá-lo no banco, estou sem a mínima noção de como fazê-lo;

Estou utilizando o Strut e o JBoss para montar minha aplicação, se alguém de vcs poder me ajudar…

2 Respostas

danieldestro

1) Talvez esteja faltando coisa na tag FORM. Veja se tem o type. Exemplo:

<form action="seuUpload.do" method="POST" enctype="multipart/form-data">

2) O Struts tem um tal de FormFile que te retorna os bytes do arquivo enviado. E para inserir no Oracle:

oracle.sql.BLOB blob;
String cmd = "select img from SUA_TABELA for update";
ResultSet rset = stmt.executeQuery(cmd);
if(rset.next()) {
  blob = ((OracleResultSet)rset).getBLOB("img");
  readFromFile(blob);
  writeToFile(blob);
}
void readFromFile (BLOB blob) throws Exception {
File binaryFile = new File("TEST.gif"); //insert your file name here.
FileInputStream in = new FileInputStream(binaryFile);
OutputStream out = blob.getBinaryOutputStream();
int chunk = blob.getChunkSize();
System.out.print("The chunk size is " + chunk);
byte<> buffer = new byte;
int length;

while ((length = in.read(buffer)) != -1)
out.write(buffer, 0, length);

in.close();
out.close();
}

static void writeToFile (BLOB blob) throws Exception {
int chunk = blob.getChunkSize();
byte<> buffer = new byte;
int length;

FileOutputStream outFile = null;
outFile = new FileOutputStream("out.gif");
InputStream instream = blob.getBinaryStream();

// Fetch data
while ((length = instream.read(buffer)) != -1) {
outFile.write(buffer, 0, length);
}

// Close input and output streams
instream.close();
outFile.close();
}

O código não está testado, mas é algo assim.

F

Valeu, danieldestro!

Não era bem o que eu queria mas já ajudou muito.
Com a dica que vc me deu já tenho uma idéia de como fazer a inserção, no banco ORACLE, do arquivo que eu buscar.

Criado 23 de março de 2005
Ultima resposta 24 de mar. de 2005
Respostas 2
Participantes 2