Erro ao tentar upar arquivo para o banco
12/09/2017
0
Alguém me ajuda, meu código esta dando erro ao tentar upar um arquivo PDF, aparece o seguinte erro:
"Warning: fopen(): Filename cannot be empty in C:\\xampp\\htdocs\\banco\\guardar_arquivo.php on line 11
Warning: fread() expects parameter 1 to be resource, boolean given in C:\\xampp\\htdocs\\banco\\guardar_arquivo.php on line 12
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\\xampp\\htdocs\\banco\\guardar_arquivo.php on line 14
O arquivo foi gravado na base de dados. "
escolher_arquivo.html
<!DOCTYPE html>
<html>
<head>
<title>teste</title>
</head>
<body>
<form enctype="multipart/form-data" action="guardar_arquivo.php" method="post">
Descrição <input type="text" name="titulo" size="30">
Arquivo <input type="file" accept=".pdf" name="arquivo">
<input type="submit" value="Enviar arquivo">
</form>
</body>
</html>
guardar_arquivo.php
<?php
require("dbconnect.inc.php");
$arquivo = $_FILES["arquivo"]["tmp_name"];
$tamanho = $_FILES["arquivo"]["size"];
$tipo = $_FILES["arquivo"]["type"];
$nome = $_FILES["arquivo"]["name"];
$titulo = $_POST["titulo"];
if ( $arquivo != "none" )
{
$fp = fopen($arquivo, "r+");
$conteudo = fread($fp, $tamanho);
$conteudo = addslashes($conteudo);
fclose($fp);
$qry = "INSERT INTO arquivos VALUES
(0,'$nome','$titulo','$conteudo','$tipo')";
mysql_query($qry);
if(mysql_affected_rows($conn) > 0)
print "O arquivo foi gravado na base de dados.";
else
print "Não foi possível gravar o arquivo na base de dados.";
}
else
print "Não foi possível carregar o arquivo para o servidor.";
?>
"Warning: fopen(): Filename cannot be empty in C:\\xampp\\htdocs\\banco\\guardar_arquivo.php on line 11
Warning: fread() expects parameter 1 to be resource, boolean given in C:\\xampp\\htdocs\\banco\\guardar_arquivo.php on line 12
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\\xampp\\htdocs\\banco\\guardar_arquivo.php on line 14
O arquivo foi gravado na base de dados. "
escolher_arquivo.html
<!DOCTYPE html>
<html>
<head>
<title>teste</title>
</head>
<body>
<form enctype="multipart/form-data" action="guardar_arquivo.php" method="post">
Descrição <input type="text" name="titulo" size="30">
Arquivo <input type="file" accept=".pdf" name="arquivo">
<input type="submit" value="Enviar arquivo">
</form>
</body>
</html>
guardar_arquivo.php
<?php
require("dbconnect.inc.php");
$arquivo = $_FILES["arquivo"]["tmp_name"];
$tamanho = $_FILES["arquivo"]["size"];
$tipo = $_FILES["arquivo"]["type"];
$nome = $_FILES["arquivo"]["name"];
$titulo = $_POST["titulo"];
if ( $arquivo != "none" )
{
$fp = fopen($arquivo, "r+");
$conteudo = fread($fp, $tamanho);
$conteudo = addslashes($conteudo);
fclose($fp);
$qry = "INSERT INTO arquivos VALUES
(0,'$nome','$titulo','$conteudo','$tipo')";
mysql_query($qry);
if(mysql_affected_rows($conn) > 0)
print "O arquivo foi gravado na base de dados.";
else
print "Não foi possível gravar o arquivo na base de dados.";
}
else
print "Não foi possível carregar o arquivo para o servidor.";
?>
Carlos Eduardo
Curtir tópico
+ 0
Responder
Post mais votado
16/09/2017
Olá Carlos Eduardo,
tudo bem?
Olhando seu HTML, seu <form> está Ok.
Em relação aos avisos de erros a partir da linha 11 no PHP, acredito que seja a condição passada no seu IF.
Tente usar:
if(file_exists($arquivo)
{ faça tal coisa }
else { Uma mensagem de erro }
Assim que passar no teste onde existe um arquivo, verifique se a permissão de acesso 'r+' da função fopen satisfaz sua necessidade e se achar necessário crie uma variável com um limite de MB ($limite = 1048576; // 1Mb) e veja se passa por esse bloco de instruções.
Qualquer coisa, poste novamente como está ficando.
Espero ter ajudado.
Abraço,
Cida Luna.
tudo bem?
Olhando seu HTML, seu <form> está Ok.
Em relação aos avisos de erros a partir da linha 11 no PHP, acredito que seja a condição passada no seu IF.
Tente usar:
if(file_exists($arquivo)
{ faça tal coisa }
else { Uma mensagem de erro }
Assim que passar no teste onde existe um arquivo, verifique se a permissão de acesso 'r+' da função fopen satisfaz sua necessidade e se achar necessário crie uma variável com um limite de MB ($limite = 1048576; // 1Mb) e veja se passa por esse bloco de instruções.
Qualquer coisa, poste novamente como está ficando.
Espero ter ajudado.
Abraço,
Cida Luna.
Aparecida Gonçalves
Responder
Mais Posts
18/09/2017
Alex William
Eu quando faço upload, eu uso a função do PHP move_uploaded_file(); que move o arquivo para uma pasta do sistema, e só grava no banco o nome ou o caminho destino do arquivo dentro do sistema.
É mais pratico, você não precisa abrir o arquivo e pegar todos os dados dele como tamanho,tipo e talz.
Dá uma olhada nesse link, vê se te ajuda:
http://php.net/manual/pt_BR/function.move-uploaded-file.php
É mais pratico, você não precisa abrir o arquivo e pegar todos os dados dele como tamanho,tipo e talz.
Dá uma olhada nesse link, vê se te ajuda:
http://php.net/manual/pt_BR/function.move-uploaded-file.php
Responder
Clique aqui para fazer login e interagir na Comunidade :)