Pacote FileUpload

6 respostas
T

Eu estou utilizando o pacote Fileupload para incluir uma imagem no banco de dados. O problema é que quando eu mando carregar a imagem no array de bytes o compilador não reconhece a função “upload.read(imagem, 0, size)”.

Será que alguém sabe o porque?

6 Respostas

G

“Tiro”:
Eu estou utilizando o pacote Fileupload para incluir uma imagem no banco de dados. O problema é que quando eu mando carregar a imagem no array de bytes o compilador não reconhece a função “upload.read(imagem, 0, size)”.

Será que alguém sabe o porque?

Olá, seja bem vindo ao Pj!!!

Posta o código aí pra gente tentar te ajudar!

:wink:

T

O código é esse

<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="java.util.*" %>
<%@ page import=" java.sql.* "%>
<%@ page import="meuPacote.*" %>


<html>
	<body bgcolor="#FFFFFF">
	<%
		// Verificando se o form possui campo(s) com dados binários
		if (FileUpload.isMultipartContent(request)) 
		{
			// criando o objeto para cuidar do upload
			DiskFileUpload fu = new DiskFileUpload();
			// setando o tamanho maximo em bytes para upload
			fu.setSizeMax(800000);
			try 
			{
				// parseando a requisição e retornando uma lista com os campos
				// encontrando, tanto textos, quanto dados binários (arquivos binários)
				List items = fu.parseRequest(request);
				Iterator i = items.iterator();

				FileItem fi;
				String cmt=null;
				// laço para pegar todos os campos do form
				while (i.hasNext()) 
				{
					fi = (FileItem)i.next();
					// teste para ver se o campo em questão é campo do formulario
					// ou um arquivo
					if (fi.isFormField()) 
					{
						// pegando o valor do campo do formulário (comentário)
						cmt = fi.getString();
					}
					else
					{
						// obtendo o tamanho da foto
						int size = (int) fi.getSize();
						// array de byte para armazenar a foto
						byte [] imagem = new byte[size];
						// carregando a foto no array
						upload.read(imagem, 0, size);
						// chamado o método estático para conectar com o banco
						MyConnection mycon = new MyConnection();
						Connection con = mycon.createConnection("fapesp");
						// onde tem ???, será substituído por valores posteriormente.
						PreparedStatement pstm = con.prepareStatement
						("INSERT INTO Arquivo (nome, arq) VALUES (?, ?)");
						// inserindo o comentário no lugar da primeira interrogação
						pstm.setString(1, cmt);
						// inserindo a foto no lugar da segunda interrogação
						pstm.setBytes(2, imagem);
						// executando a query
						pstm.executeUpdate();
					}
				}
			}
			catch (Exception e) 
			{
				e.printStackTrace();
			}
		}
			
		else 
		{
			out.print("O Formulario nao possui dados binários");
		}
		
	%>
		<h2>Fonto inserida com sucesso no banco de dados!</h2>
	</body>
</html>
T

A parte do código q tah dando erro é essa

// obtendo o tamanho da foto int size = (int) fi.getSize(); // array de byte para armazenar a foto byte [] imagem = new byte[size]; // carregando a foto no array upload.read(imagem, 0, size);

J

Não achei onde você instanciou o objeto upload.

T

Mas então como eu instancio o obj upload? Pq eu tentei antes e começou a dar mais erro do que sem instanciar

T

Pronto. Descobri. Obrigado pela dica de instanciar…

Tava faltando essa linha

InputStream upload = fi.getInputStream();

Foi mal pela minha falta de antenção

Criado 18 de agosto de 2005
Ultima resposta 22 de ago. de 2005
Respostas 6
Participantes 3