Upload de Arquivo

Olá rapaziada do GUJ,

Bem to com um probleminha e espero que vcs possam me dar uma luz hehe, to tentando fazer um formulario que contenha um “unput type=file” para ecolher o arquivo para ser registrado no banco de dados, so que tenho algumas perguntas.
Primeiro como faço para armazanar esse arquivo no banco de dados, devo usar o campo BLOB?
Segundo, estou usando o padrão fachada, criei um Bean Arquivo para armazenar os dados do formulario, ele tem um campo nome , cod mas o problema eh qual o typo de variavel que eu coloco para armazenar o Arquivo que quero armazanar no Banco de dados.
Espero que possam me ajudar ,

Ola hklemp,

Nunca fiz nada do tipo em java. Mas posso te afirmar que para armazenar no banco vc deve usar o tipo BLOB. No oracle existe o tipo lograw, mas só continua para manter compatiblidade com outras vesões do oracle, pois ele é bem pior.
Se vc vai usar o tipo BLOBno banco. No seu PreparedStatement vc pode usar o setBlob(int, Blob). O Blob é uma interface java.
Espero ter ajudado!!!

Abraços

Cara , obrigado pelo menos uma dúvida ja está respondida, mas se alguém souber como faço para setar o meu bean cuja um dos campos eh um arquivo, por favor me ajudem!!!

[quote=“hklemp”]Olá rapaziada do GUJ,

Bem to com um probleminha e espero que vcs possam me dar uma luz hehe, to tentando fazer um formulario que contenha um “unput type=file” para ecolher o arquivo para ser registrado no banco de dados, so que tenho algumas perguntas.
Primeiro como faço para armazanar esse arquivo no banco de dados, devo usar o campo BLOB?
Segundo, estou usando o padrão fachada, criei um Bean Arquivo para armazenar os dados do formulario, ele tem um campo nome , cod mas o problema eh qual o typo de variavel que eu coloco para armazenar o Arquivo que quero armazanar no Banco de dados.
Espero que possam me ajudar ,[/quote]

Por acaso você está utilizando um componente para efetuar o upload no banco de dados ou é uma classe feita por você mesmo ?

Atualmente eu utilizo o uplodbean (http://www.javazoom.net/jzservlets/uploadbean/uploadbean.html) para gravar arquivos no banco MySQL (campo to tipo LONGBLOB), nesse site também tem um add-in para Oracle (campo BLOB).

A Oracle também tem classes para efetuar o upload no banco de dados (só que é apenas para o banco deles), você procura no manual Intermedia Java Classes

Cara , valeu baixeu esse módulo, e parece ser muito simples a instalação, porém eu criei a tabela como ele disse e apareceu a seguinte msg:
javazoom.upload.UploadException: Database store error null
Se vc puder me ajudar eu agradeço. To usando o mysql e criei a tabela e o campo como ele pediu , to usando o mysql-connector-java-3.0.7-stable-bin, ele ta na pasta lib de web-inf.

[quote=“hklemp”]Cara , valeu baixeu esse módulo, e parece ser muito simples a instalação, porém eu criei a tabela como ele disse e apareceu a seguinte msg:
javazoom.upload.UploadException: Database store error null
Se vc puder me ajudar eu agradeço. To usando o mysql e criei a tabela e o campo como ele pediu , to usando o mysql-connector-java-3.0.7-stable-bin, ele ta na pasta lib de web-inf.[/quote]

Geralmente eu coloco o driver do MySQL (o .jar) na pasta TOMCAT_HOME\common\lib.

Passo a passo :

Esse é o script para criar a tabela no MySQL (upload_mysql.sql):


# **-----------------------------------------------------------------**
# ** Creates MySQL table to store binary files                       **
# **                                                                 **
# ** UploadBean/MySQL sample script.                                 **
# ** http://www.javazoom.net/jzservlets/uploadbean/uploadbean.html   **
# ** Copyright JavaZOOM 1999-2002.                                   **
# **-----------------------------------------------------------------**
# DROP TABLE UPLOADS;
CREATE TABLE UPLOADS (
	UPLOADID INT NOT NULL, 
	FILENAME VARCHAR(255), 
	BINARYFILE LONGBLOB,
	PRIMARY KEY (UPLOADID)
);

No prompt do MySQL

//Cria um usuário :
1 - GRANT ALL PRIVILEGES ON *.* TO meuusuario@localhost IDENTIFIED BY 'minhasenha' WITH GRANT OPTION;
2 - quit;

No prompt do MS-DOS

// se loga com o usuário meuusuario
mysql --user=meuusuario@localhost
//Depois que entrar no prompt do MySQL você digita :
1 - CREATE DATABASE meudb;
2 - quit;

No prompt do MS-DOS

[code]
// se loga com o usuário meuusuario e executa o script no banco meudb
mysql --user=meuusuario@localhost meubd < caminho_completo_do_upload_mysql.sql

[code]

Daí você muda os parâmetros no arquivo DatabaseUpload.jsp na seguinte linha :

De:
[code]
<%
Properties props = new Properties();
props.put(“user”,“scott”);
props.put(“password”,“tiger”);
upBean.setDatabasestore(“oracle.jdbc.driver.OracleDriver”,
“jdbc:oracle:thin:@MYSERVER:1521:ORCL”, props);
%>
[/code]

Para :

[code]
<%
Properties props = new Properties();
props.put(“user”,“meuusuario”);
props.put(“password”,“minhasenha”);
upBean.setDatabasestore(“org.gjt.mm.mysql.Driver”,
“jdbc:mysql://localhost:3306/meudb”, props);
%>
[/code]

Detalhe o método setDatabasestore possui um outro tipo de assinatura:

[code]
public void setDatabasestore(java.sql.Connection jdbcconnection)
throws java.lang.ExceptionSetup the store database that suits to JDBC 2.0 extension.
Think about DataSource to fill in the jdbcconnection parameter.

java.lang.Exception
[/code]

Eu só utilizo esse pois eu já passo um objeto Connection que eu recupero do pool de conexões.

No erro só está aparecendo o “javazoom.upload.UploadException: Database store error null” ?

Seria bom se você passasse o stacktrace

Pessoal peço ajuda pois estou utilizando o Upload Bean para Banco de Dados mysql as informações encontradas aqui muito me ajudaram,mas quando tento inserir a imagem no banco retorna o erro : java.lang.NullPointerException …
O meu código é o seguinte…alguém pode me dar um help do que poderia estar fazendo errado?

<%@ page language="java" import="javazoom.upload.*,java.util.*" %> <%@page import="java.sql.Connection"%> <%@ page errorPage="ExceptionHandler.jsp" %>

<jsp:useBean id=“upBean” scope=“application” class=“javazoom.upload.UploadBean” >

<%
Properties props = new Properties();
// Modify info below to fit to your database settings.
props.put(“user”,“aqui coloco meu user”);
props.put(“password”,“aqui coloco minha senha”);
upBean.setDatabasestore(“com.mysql.jdbc.Driver”,
“jdbc:mysql://172.16.9.215:3306/uploads”, props);
// If you have get a JDBC Connection from a javax.sql.DataSource
// Then use upBean.setDatabasestore(YourConnection);
// Also, uncomment and modify variables below if you need to map to your own database schema.
//UploadBean.SQLUPLOADTABLE = “UPLOADS”;
//UploadBean.SQLUPLOADID = “UPLOADID”;
//UploadBean.SQLUPLOADFILENAME = “FILENAME”;
//UploadBean.SQLUPLOADFILE = “BINARYFILE”;
// Note that if you need to modify SQL request then see UploadBean
// add-ons section to plug a custom DBStore implementation (BLOB, …).
%>
</jsp:useBean>
<jsp:setProperty name=“upBean” property=“overwrite” value=“true” />

Samples : Database Upload
    <% if (MultipartFormDataRequest.isMultipartFormData(request)) { // Uses MultipartFormDataRequest to parse the HTTP request. MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request); String todo = null; if (mrequest != null) todo = mrequest.getParameter("todo"); if ( (todo != null) && (todo.equalsIgnoreCase("upload")) ) { Hashtable files = mrequest.getFiles(); if ( (files != null) && (!files.isEmpty()) ) { UploadFile file = (UploadFile) files.get("uploadfile"); if (file != null) out.println("
  • Form field : uploadfile"+"
    Uploaded file : "+file.getFileName()+" ("+file.getFileSize()+" bytes)"+"
    Content Type : "+file.getContentType()); // Store uploaded files in database now. Third parameter allows to pass options Map. HashMap options = null; // Sample advanced options. //options = new HashMap(); //options.put("dbstore.uploadid","id."+System.currentTimeMillis()); //options.put("dbstore.filesize","enabled"); //options.put("dbstore.filetype","enabled"); //options.put("dbstore.customcolumn.created_date",new Date()); upBean.store(mrequest, "uploadfile", options); // int lastid = ((DefaultDBStore)upBean.getDatabasestoreimplementation()).getLastId(); } else { out.println("
  • No uploaded files"); } } else out.println("
    todo="+todo); } Vector history = upBean.getHistory(); int amount = 0; if (history != null) amount = history.size(); %>
    (Uploaded files : <%= amount %>)
Select a file to upload :


  HTML tags used in this form :
 <form method="post" action="DatabaseUpload.jsp" name="upload" enctype="multipart/form-data">
 <input type="file" name="uploadfile" size="50">

 

 

 

 

Copyright © JavaZOOM 1999-2006

Observação o ip é o que uso para rodar as aplicações por enquanto.