Array
(
)

function.fopen PHP Version 5.3.1

PHP
Thug Life
   - 17 jun 2012

Tenho uma página cad_produtos, na referida página faço uso da função fopen para enviar a foto para o host local e associa a foto ao produto, o problema é que o script não está fazendo o que deveria estar fazendo ele da os seguintes erros:
Warning: fopen() [function.fopen]: Filename cannot be empty in C:\xamppteste\xampp\htdocs\si\web\admin\cad_produtos.php on line 24
Warning: fread() expects parameter 1 to be resource, boolean given in C:\xamppteste\xampp\htdocs\si\web\admin\cad_produtos.php on line 25
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\xamppteste\xampp\htdocs\si\web\admin\cad_produtos.php on line 27
já li o manual, varios artigos na internet e ainda não consegui concertar o problema, depois de varias xícaras de café, resolvi postar aqui meu script quem sabe tem alguém aqui que tenha uma solução.
#Código

$foto = $_FILES[foto][tmp_name];
$tamanho = $_FILES[foto][size];
$tipo    = $_FILES[foto][type];
$nome  = $_FILES[foto][name];

if ($foto != none) {
   $fp = fopen($foto, r);
   $conteudo = fread($fp, $tamanho);
   $conteudoFoto = addslashes($conteudo);
   fclose($fp);
} else {
   $foto = null;
}

  switch ($_REQUEST[action]) {
  case save:
  if ($_POST[editing] == 0) {
  $sql = INSERT INTO produtos (marcas_id, categorias_id, descricao, preco, foto) .
VALUES ($marcas_id, $categorias_id, $descricao,$preco, $conteudoFoto);
} else {
  $sql = UPDATE produtos SET  .
 marcas_id = $marcas_id .
,categorias_id = $categorias_id .
,descricao = $descricao .
,preco = $preco .
,foto = $foto .
WHERE produtos_id = $produtos_id;
  }
 }

Penso que ta bom pra não ficar muito grande o código aqui, mais a pedido posto todo o código da página, mais penso que não há necessidade. obrigado

Netcat
|
MVP
    17 jun 2012

Cara,

boa tarde... Verifica se o nome da foto contem a extensao, veja se ele esta certinho em relação ao caminho e a existencia do arquivo...

Outra coisa.. o parametro da fopen(CAMINHO DO ARQUIVO, r)....

e pelo seu erro o nome do arquivo que voce esta enviando, esta vazio...

Verifica do formulario que essa foto esta indo e confirma se no form voce adicionou:

<form enctype=application/form-data>

pois é isso que permite o envio de fotos...

Att.,
Rodrigo Marques - www.cotiinformatica.com.br

Thug Life
   - 17 jun 2012

Obrigado Rodrigo, explicando melhor a página, ela carrega 1 campo do tipo select com as categorias dos produtos e outro com as marcas, depois de selecionar a categoria e a marca desejada é só clicar no botão pra fazer o upload,o problema é que ao entrar na página cad_produtos.php ela já carrega com erro, antes de clicar no botão pra selecionar a foto.
#Código

<form id=artigos name=artigos action=<?= $_SERVER[PHP_SELF] ?> method=post enctype=multipart/form-data>
\e no final do script
<input type=submit id=btGravar name=btGravar class=bta value=Gravar onclick=$(action).value=save />


formulário está ok.

#Código
 if ($foto != none) {
   $fp = fopen($foto, r);\aponta erro aqui.
   $conteudo = fread($fp, $tamanho);\aponta erro aqui.
   $conteudoFoto = addslashes($conteudo);
   fclose($fp);\aponta erro aqui.
} else {
   $foto = null;
}

Eu vi a página funcionar na casa do meu amigo, agora estou começando a pensar que seja por causa da versão do php, um vez que já faz um tempo que a página foi programada, vou entrar em contato com ele e perguntar qual a versão do php ele usava na época. se eu resolver o problema posto aqui como f

Thug Life
   - 17 jun 2012

OK, já entrei em contato com ele, a página não tem erro algum o que estava errado era minha configuração no php.ini, #Código

short tags= OFF
até este momento eu usava o xammp não consegui localizar o arquivo para alterar #Código
short tags= ON
removi o xammp do computador e vou instalar mysql apache e php da maneira certa, eu já tive problemas com o easyphp ao instalar o xammp pensei que seria diferente pura ilusão.