Erro ao tentar upar arquivo para o banco

12/09/2017

0

PHP

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.";
?>
Carlos Eduardo

Carlos Eduardo

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.

Aparecida Gonçalves

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
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar