Problemas de Upload de Imagens

Enviada por Charles 
Charles
Problemas de Upload de Imagens
25 de November de 2007 às 02:30PM
Pessoal td bem? Estou com uma dúvida e gostaria que vcs me ajudassem. Peguei recentemente um ecommerce semelhante ao que eu tava desenvolvendo, mais ate então na parte de cadastro de produtos, eu não to conseguindo fazer o upload das fotos. Ele cadastra normal mente, mais não leva a imagem ate a pasta do ecommerce. Ficarei grato se me ajudarem. O codigo está logo abaixo.


<?
require('../classes/banco.php');
if (isset($btconf)) {

$news = new MySql;
$news->Conectar('loja');
$sql = "SELECT * FROM tb_prod WHERE cod_barra='$txcod_barra'";
$select = $news->Query($sql);
$qtd = $news->Total_de_registros($select);
if ($qtd > 0) {
echo "<script>alert('Produto já cadastrado')</script>";
} else {
$pasta = "../img";
$txcaminho_foto = $pasta ."/". $txfoto_nome;
move_uploaded_file($txcaminho_foto,$txfoto);
$sql2 = "INSERT INTO tb_prod (cod_cat,nome_prod,peso_prod,caminho_foto,qtd_min,preco,cod_barra)";
$sql2 .= "VALUES ('$menucat','$txnome_prod','$txpeso_prod','$txfoto','$txqtd_min','$txpreco','$txcod_barra')";
$certo = $news->Query($sql2);
if (!$certo){
echo "<script>alert('Falha no cadastramento')</script>";
}else
echo "<script>alert('Cadastro realizado com sucesso');</script>";
}
print "<a href='JavaScript:window.history.go(-2)'><em>Voltar</em></a>";
exit;
$news->Fechar();
}

?>


<head>
<title> Confirmar Cadastro Produtos</title>
<link rel="stylesheet" type="text/css" href="../style/formato.css">
</head>

<body>
<h1 class="titulo"><em> Confirmar Cadastro</em></h1>
<hr>
<form action="cadprodutosconf.php" method="post" name="frm1" enctype="multipart/form-data">
<input type="hidden" name="menucat" value="<? echo $menucat; ?>">
<input type="hidden" name="txnome_prod" value="<? echo $txnome_prod; ?>">
<input type="hidden" name="txpeso_prod" value="<? echo $txpeso_prod; ?>">
<input type="hidden" name="txfotonome" value="<? echo $txfoto_name; ?>">
<input type="hidden" name="txfoto" value="<? echo $txfoto; ?>">
<input type="hidden" name="txqtd_min" value="<? echo $txqtd_min; ?>">
<input type="hidden" name="txpreco" value="<? echo $txpreco; ?>">
<input type="hidden" name="txcod_barra" value="<? echo $txcod_barra; ?>">
<table>
<tr>
<td class="text1">Categoria:</td>
<td class="text1"><? echo $menucat; ?></td>
</tr>
<tr>
<td class="text1">Nome: </td>
<td class="text1"><? echo $txnome_prod; ?></td>
</tr>
<tr>
<td class="text1">Peso:</td>
<td class="text1"><? echo $txpeso_prod; ?></td>
</tr>
<tr>
<td class="text1">Foto:</td>
<td class="text1"><? echo $txfoto ?></td>
</tr>
<tr>
<td class="text1">Quantidade Mínima:</td>
<td class="text1"><? echo $txqtd_min; ?></td>
</tr>
<tr>
<td class="text1">Preço:</td>
<td class="text1"><? echo $txpreco; ?></td>
</tr>
<tr>
<td class="text1">Código de Barra:</td>
<td class="text1"><? echo $txcod_barra; ?></td>
</tr>
<td><input type="submit" value="Confirmar" name="btconf" class="text1"></td>

</tr>
</table>
</form>

<em><a href='JavaScript:window.history.go(-1)'>Voltar</a></em>
</body>


Aguardo respostas. Valeu galera. Em breve tenho coisa nova da empresa pra Postar. kkkkkkkkk
Rafae Salomão
Re: Problemas de Upload de Imagens
27 de November de 2007 às 01:48PM
atenção irmão essas linhas

$pasta = "../img";
$txcaminho_foto = $pasta ."/". $txfoto_nome;
move_uploaded_file($txcaminho_foto,$txfoto);

setam o caminho para aonde a foto deve ir.Da uma olhada se o diretorio img esta um um diretorio antes do diretorio do script e se tem permissão de esrita ou seja permissão 777. aguardo respostas.
Charles
Re: Problemas de Upload de Imagens
27 de November de 2007 às 03:34PM
Oi, Salomão desde já gradeço pela ajuda. A psta está sim um diretório antes e ela tem permissão, mais mesmo assim não faz o upload, o cara q escreveu esse codigo não me passou nenhum comentário. Infelizmente não gosto de pega codigos assim por isso. Ele cadastra normalmente, mais a foto continua não fazendo o upload. So funciona se eu for no banco e jogar o caminho da imagem e, é claro q eu tbm preciso copiar a imagem pra dentro da pasta. O projeto ja chegou em minhas mão com itens cadastrados. No banco fica noral o nome da imagem, qnd eu faço o upload aqui aparece c:\apache\php\temp e isso é constante.

se me ajudar fico grato.

Um abraço!!!
Rafael Salomão
Re: Problemas de Upload de Imagens
27 de November de 2007 às 04:40PM
irmão vamos fazer umas modificações vai até sair no lucro porque assim ganha um tratamento para upload de fotos altera aquele script raca fora a rotina de upload e encaixa esse..

<?php
$erro = $config = array();
// Prepara a variável do arquivo
$arquivo = isset($_FILES["nomedocampofile"]) ? $_FILES["nomedocampofile"] : FALSE;
// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 100000;
// Largura máxima (pixels)
$config["largura"] = 800; //$width;
// Altura máxima (pixels)
$config["altura"] =800; // $height;
// Formulário postado... executa as ações
if ($arquivo) {
// Verifica se o mime-type do arquivo é de imagem
if (!eregi("^image\/(pjpeg|jpeg|png|gif|bmp|swf)$", $arquivo["type"])) {
$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";
} else {
// Verifica tamanho do arquivo
if ($arquivo["size"] > $config["tamanho"]) {
$erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
}
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if ($tamanhos[0] > $config["largura"]) {
$erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels";
}
// Verifica altura
if ($tamanhos[1] > $config["altura"]) {
$erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels";
}
}
// Imprime as mensagens de erro
if (sizeof($erro)) {
foreach ($erro as $err) {
echo "<script language='javascript'>
alert('Erro: $err');
</script>";
}
}
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem ficará
//@mkdir ("fotos", 0700);
$imagem_dir = "../img/".$arquivo["name"];
$name_imagem=$imagem_dir;
$image=$arquivo["name"];
// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
$criou=1;
}
}
?>

Depois me diz esse eu sei que funciona direitinho ta rodando no meu sistema de ediçào de sites.
Charles
Re:
27 de November de 2007 às 05:35PM
Vo colocar da melhor maneira aqui pra vc entender.

na 1 tela de cadastro eu tenho o seguinte.
VC copia e ve em html, não precisa ficar lendo, depois desse eu faço uma chamada para cadprodutosconf.php, que lá aparecerá as informações digitadas por mim para eu confirmar. [Veja depois do Codigo]


<head>
<title>Cadastrar Produto</title>
<link rel="stylesheet" type="text/css" href="../style/formato.css">
</head>

<body>
<h1 class="titulo"><em>Cadastrar Produtos</em></h1>
<hr>
<form action="cadprodutosconf.php" method="post" enctype="multipart/form-data" name="form1">
<table width="94%" border="0" cellspacing="0" cellpadding="0" class="text1">
<tr>
<td><em>Categoria:</em></td>
<td><select name="menucat" class="text1">
<?
require('../classes/banco.php');
$news = new MySql;
$news->Conectar('loja');
$sql = "SELECT * FROM tb_cat";
$select = $news->Query($sql);
while (($registro = mysql_fetch_array($select)) != 0) {
print "<option value=".$registro['cod_cat']. ">".$registro['nome_cat'] ."</option>";
}
$news->Fechar();
?>
</select></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="19%"><em>Nome:</em></td>
<td width="49%"><input name="txnome_prod" type="text" size="60" class="text1"></td>
<td width="32%">&nbsp;</td>
</tr>
<tr>
<td><em>Peso:</em></td>
<td><input name="txpeso_prod" type="text" size="30" class="text1"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><em>Foto:</em></td>
<td><input name="txfoto" type="file" class="text1" id="txfoto"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><em>Quantidade M&iacute;nima:</em></td>
<td><input name="txqtd_min" type="text" size="18" class="text1"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><em>Pre&ccedil;o:</em></td>
<td><input name="txpreco" type="text" size="18" maxlength="15" class="text1"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><em>C&oacute;digo de Barra:</em></td>
<td><input name="txcod_barra" type="text" size="18" maxlength="11" class="text1"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="btenviar" type="submit" id="btenviar" value="Enviar" class="text1"> <input name="btlimpar" type="reset" id="btlimpar" value="Limpar" class="text1"></td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>


logo então vc me passou aquele codigo, mas ai eu nao to conseguindo arrumar um local ideal para colocar ele. o campo no banco de dados é caminho_imagem. me da uma luza pra eu organizar. Vai ai novamente o codigo do cadprodutosconf.php.

<?
require('../classes/banco.php');
if (isset($btconf)) {

$news = new MySql;
$news->Conectar('loja');
$sql = "SELECT * FROM tb_prod WHERE cod_barra='$txcod_barra'";
$select = $news->Query($sql);
$qtd = $news->Total_de_registros($select);
if ($qtd > 0) {
echo "<script>alert('Produto já cadastrado')</script>";


$erro = $config = array();
// Prepara a variável do arquivo
$arquivo = isset($_FILES["nomedocampofile"]) ? $_FILES["nomedocampofile"] : FALSE;
// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 100000;
// Largura máxima (pixels)
$config["largura"] = 800; //$width;
// Altura máxima (pixels)
$config["altura"] =800; // $height;
// Formulário postado... executa as ações
if ($arquivo) {
// Verifica se o mime-type do arquivo é de imagem
if (!eregi("^image\/(pjpeg|jpeg|png|gif|bmp|swf)$", $arquivo["type"])) {
$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";
} else {
// Verifica tamanho do arquivo
if ($arquivo["size"] > $config["tamanho"]) {
$erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
}
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if ($tamanhos[0] > $config["largura"]) {
$erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels";
}
// Verifica altura
if ($tamanhos[1] > $config["altura"]) {
$erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels";
}
}
// Imprime as mensagens de erro
if (sizeof($erro)) {
foreach ($erro as $err) {
echo "<script language='javascript'>
alert('Erro: $err');
</script>";
}
}
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem ficará
//@mkdir ("fotos", 0700);
$imagem_dir = "../img/".$arquivo["name"];
$name_imagem=$imagem_dir;
$image=$arquivo["name"];
// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
$criou=1;
}
}
$sql2 = "INSERT INTO tb_prod (cod_cat,nome_prod,peso_prod,caminho_foto,qtd_min,preco,cod_barra)";
$sql2 .= "VALUES ('$menucat','$txnome_prod','$txpeso_prod','$txfoto','$txqtd_min','$txpreco','$txcod_barra')";
$certo = $news->Query($sql2);
if (!$certo){
echo "<script>alert('Falha no cadastramento')</script>";
}else
echo "<script>alert('Cadastro realizado com sucesso');</script>";
}
print "<a href='JavaScript:window.history.go(-2)'><em>Voltar</em></a>";
exit;
$news->Fechar();
}

?>

Imenso não é? como eu posso organizar seu codigo nesse meu? To meio enferrujado, pois a tempo q nao programo e to de volta agora. Mas não incomodando, incomodando me diz ai como posso organizar.

Grato e aguardo respostas.

Vlw!!
Rafael Salomão
Re:Ve se funfa
27 de November de 2007 às 05:59PM

<head>
<title>Cadastrar Produto</title>
<link rel="stylesheet" type="text/css" href="../style/formato.css">
</head>
<?
require('../classes/banco.php');
if (isset($btconf)) {
$news = new MySql;
$news->Conectar('loja');
$sql = "SELECT * FROM tb_prod WHERE cod_barra='$txcod_barra'";
$select = $news->Query($sql);
$qtd = $news->Total_de_registros($select);
if ($qtd > 0) {
echo "<script>alert('Produto já cadastrado')</script>";
} else {
//rotina de upload


$erro = $config = array();
// Prepara a variável do arquivo
$arquivo = isset($_FILES["text1"]) ? $_FILES["text1"] : FALSE;
// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 100000;
// Largura máxima (pixels)
$config["largura"] = 800; //$width;
// Altura máxima (pixels)
$config["altura"] =800; // $height;
// Formulário postado... executa as ações
if ($arquivo) {
// Verifica se o mime-type do arquivo é de imagem
if (!eregi("^image\/(pjpeg|jpeg|png|gif|bmp|swf)$", $arquivo["type"])) {
$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";
} else {
// Verifica tamanho do arquivo
if ($arquivo["size"] > $config["tamanho"]) {
$erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
}
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if ($tamanhos[0] > $config["largura"]) {
$erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels";
}
// Verifica altura
if ($tamanhos[1] > $config["altura"]) {
$erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels";
}
}
// Imprime as mensagens de erro
if (sizeof($erro)) {
foreach ($erro as $err) {
echo "<script language='javascript'>
alert('Erro: $err');
</script>";
}
}
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem ficará
//@mkdir ("fotos", 0700);
$imagem_dir = "../img/".$arquivo["name"];
$name_imagem=$imagem_dir;
$image=$arquivo["name"];
// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
$criou=1;
}
}
if(!empty($criou))
{
//fim da rotina
$sql2 = "INSERT INTO tb_prod (cod_cat,nome_prod,peso_prod,caminho_foto,qtd_min,preco,cod_barra)";
$sql2 .= "VALUES ('$menucat','$txnome_prod','$txpeso_prod','$txfoto','$txqtd_min','$txpreco','$txcod_barra')";
$certo = $news->Query($sql2);
if (!$certo){
echo "<script>alert('Falha no cadastramento')</script>";
}else{
echo "<script>alert('Cadastro realizado com sucesso');</script>";
}
print "<a href='JavaScript:window.history.go(-2)'><em>Voltar</em></a>";
exit;
$news->Fechar();
}
}
}
?>
<body>
<h1 class="titulo"><em>Cadastrar Produtos</em></h1>
<hr>
<form action="cadprodutosconf.php" method="post" enctype="multipart/form-data" name="form1">
<table width="94%" border="0" cellspacing="0" cellpadding="0" class="text1">
<tr>
<td><em>Categoria:</em></td>
<td><select name="menucat" class="text1">
<?
require('../classes/banco.php');
$news = new MySql;
$news->Conectar('loja');
$sql = "SELECT * FROM tb_cat";
$select = $news->Query($sql);
while (($registro = mysql_fetch_array($select)) != 0) {
print "<option value=".$registro['cod_cat']. ">".$registro['nome_cat'] ."</option>";
}
$news->Fechar();
?>
</select></td>
<td> </td>
</tr>
<tr>
<td width="19%"><em>Nome:</em></td>
<td width="49%"><input name="txnome_prod" type="text" size="60" class="text1"></td>
<td width="32%"> </td>
</tr>
<tr>
<td><em>Peso:</em></td>
<td><input name="txpeso_prod" type="text" size="30" class="text1"></td>
<td> </td>
</tr>
<tr>
<td><em>Foto:</em></td>
<td><input name="txfoto" type="file" class="text1" id="txfoto"></td>
<td> </td>
</tr>
<tr>
<td><em>Quantidade Mínima:</em></td>
<td><input name="txqtd_min" type="text" size="18" class="text1"></td>
<td> </td>
</tr>
<tr>
<td><em>Preço:</em></td>
<td><input name="txpreco" type="text" size="18" maxlength="15" class="text1"></td>
<td> </td>
</tr>
<tr>
<td><em>Código de Barra:</em></td>
<td><input name="txcod_barra" type="text" size="18" maxlength="11" class="text1"></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input name="btenviar" type="submit" id="btenviar" value="Enviar" class="text1"> <input name="btlimpar" type="reset" id="btlimpar" value="Limpar" class="text1"></td>
<td> </td>
</tr>
</table>
</form>
</body>
Charles
Re:Ve se funfa
27 de November de 2007 às 10:16PM
Valeu amigo pela ajuda, to tentando ainda aqui, mais se sucesso. ele continua amostrando o upload da foto para c:\apache\temp\

ja tentei de várias formas e sem sucesso. Se puder continuar me ajudando, blz,enquanto isso to fuçando ainda. ah! e o que é ve se funfa?

Fui!!
Rafael Salomão
Re:Ve se funfa
28 de November de 2007 às 01:17PM
funfar é funcionar no português da net

Saca so me manda o erro inteiro toma meu email e me envia os arquivo para eu dar uma olha abotapreta@abotapreta.com.br
Rafael Salomão
Re:Ve se funfa
28 de November de 2007 às 01:20PM
esse diretorio que ele esta mostrando c:\apache\temp\
e o diretório temporário onde o servidor do php coloca as fotos enviadas por upload depois o script move a foto atráves dessa função
move_uploaded_file($arquivo["tmp_name"], $imagem_dir); me manda o arquivo e
a mensagem de erro completa.

Abraços.
Charles
Re:Ve se funfa
06 de December de 2007 às 12:07AM
E ai alguma novidade pra mim? Oa tu tens algum ecommerce pronto q pudessemos negociar. E pq na verdade eu quero desse ecommerce fazer um site q eu possa clicar na figura e aparecer os dados dela, semelhante ao ecommerce, apenas sem o carrinho de compras, por enquanto. Mas com todos os forms de cadastro para aparecer no index e demais páginas. Fiz Php básico e Java, mas to voltando a estudar agora. os exemplos prontos q eu peguei na net, são piores q os meus. Se puder me ajudar, poderei ver o q posso fazer por vc. Grato.
Leonardo Gazio
Re:Ve se funfa
09 de December de 2007 às 04:16PM
Fala pessoal,

tô batendo cabeça aqui mas não sei nem por onde começar. Tem como eu pegar todos os arquivos de uma pasta e fazer o upload deles? sem formulário html, só o script php mesmo...

desde já agradeço à galera, []'s a todos.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.