Jump to content

Não carrega PDF porquê?


Go to solution Solved by Knot,

Recommended Posts

Posted (edited)

<p>Boas pessoal. Criei uma página para upload de ficheiros com um código que encontrei na net. Consigo fazer upload de todos os tipos de ficheiros que preciso mas não sei porquê PDF não dá de maneira nenhuma. Eles ficam arquivados na pasta uploads mas nunca são inseridos na base de dados. Se puderem ajudar agradecia...

Aqui está o código de upload (upload.php):

<?php
include_once 'dbconfig.php';
if(isset($_POST['btn-upload']))
{    

$file = rand(1000,100000)."-".$_FILES['file']['name'];
   $file_loc = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$folder="uploads/";

// new file size in KB
$new_size = $file_size/1024;  
// new file size in KB

// make file name in lower case
$new_file_name = strtolower($file);
// make file name in lower case

$final_file=str_replace(' ','-',$new_file_name);

if(move_uploaded_file($file_loc,$folder.$final_file))
{
$sql="INSERT INTO tbl_ficheiros(ficheiro,tipo,tamanho) VALUES('$final_file','$file_type','$new_size')";
mysql_query($sql);
?>
<script>
alert('successfully uploaded');
       window.location.href='view.php?success';
       </script>
<?php
}
else
{
?>
<script>
alert('error while uploading file');
       window.location.href='upload.php?fail';
       </script>
<?php
}
}
?>
Edited by DreamOn
Posted

Não me dá erro. Aliás diz que o upload foi feito com sucesso, e de facto foi, mas só aparece na pasta e na base de dados nada :/

Algo como isto?

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if file already exists
if (file_exists($target_file)) {
   echo "Sorry, file already exists.";
   $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
   echo "Sorry, your file is too large.";
   $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "pdf" ) {
   echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
   $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
   echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
   if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
   } else {
    echo "Sorry, there was an error uploading your file.";
   }
}
?>
Posted

Vê o log do apache para ver se tem algum erro. Deve haver algum problema quando executas

$sql="INSERT INTO tbl_ficheiros(ficheiro,tipo,tamanho) VALUES('$final_file','$file_type','$new_size')";
mysql_query($sql);

Sim podes usar o segundo código que usaste, adicionando a parte do sql para inserir os dados na base de dados.

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
$sql="INSERT INTO tbl_ficheiros(ficheiro,tipo,tamanho) VALUES('$final_file','$file_type','$new_size')";
mysql_query($sql);
}
  • Vote 1
Posted (edited)

Usei o código mas dá me sempre dois erros:

Notice: Undefined index: fileToUpload in C:\Program Files\EasyPHP 3.0\EasyPHP 3.0\www\RelPro\upload.php on line 3

Sorry, file already exists.

Notice: Undefined index: fileToUpload in C:\Program Files\EasyPHP 3.0\EasyPHP 3.0\www\RelPro\upload.php on line 12

Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded.

Edited by DreamOn
Posted

Sim ou então no código php onde tens fileToUpload mudas para file.

Mas o mais fácil é mudar no input:

<input type="file" name="fileToUpload" id="fileToUpload" required>
Posted

The file 96133-acflags.pdf has been uploaded.

Notice: Undefined variable: final_file in C:\Program Files\EasyPHP 3.0\EasyPHP 3.0\www\RelPro\upload.php on line 29

Notice: Undefined variable: file_type in C:\Program Files\EasyPHP 3.0\EasyPHP 3.0\www\RelPro\upload.php on line 29

Notice: Undefined variable: new_size in C:\Program Files\EasyPHP 3.0\EasyPHP 3.0\www\RelPro\upload.php on line 29

Warning: mysql_query() [function.mysql-query]: Acesso negado para o usuário 'ODBC'@'localhost' (senha usada: NÃO) in C:\Program Files\EasyPHP 3.0\EasyPHP 3.0\www\RelPro\upload.php on line 30

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Program Files\EasyPHP 3.0\EasyPHP 3.0\www\RelPro\upload.php on line 30

Ele fez o upload para a pasta mas não para a BD

Posted (edited)

Os erros da linha 29 ocorrem pq não existem essas variáveis, deves usar as variáveis corretas ou então atribuir a essas o valor correto:

$new_size = $_FILES["fileToUpload"]["size"]; //atribuir o valor à variável $new_size
$file_type = $imageFileType; //atribuir o valor à variável $file_type
$final_file = $_FILES["fileToUpload"]["tmp_name"]; //atribuir o valor à variável $final_file

$sql="INSERT INTO tbl_ficheiros(ficheiro,tipo,tamanho) VALUES('$final_file','$file_type','$new_size')";
mysql_query($sql);

Depois não estás a conseguir ligar-te à base de dados, deves verificar se tens o ficheiro com as definições de ligação, que penso que seja o teu ficheiro dbconfig.php

include_once 'dbconfig.php';
Edited by Knot
Posted (edited)

Editei a minha resposta, vê novamente.

Confirma se a tabela tem apenas esses 3 campos, pois seria de esperar que tivesse o campo "id_ficheiro", embora possas não o ter, mas se fosse eu iria utilizar um id automático na tabela.

Edited by Knot
Posted

Ok ele já faz o upload para a base de dados mas no entanto ele fica com o caminho como nome e fica como .tmp

C:Program FilesEasyPHP 3.0EasyPHP 3.0 mpphpB329.tmp

Sim a tabela dispoe do id_ficheiro Not Null Auto Increment

editado:

Untitled_zpspbftnvgu.webp.b222d33e13dd3a

Posted (edited)

Já está tudo funcional Obrigado pela ajuda 😉 Vou ver se agora consigo fazer a form para download dos ficheiros.

Aqui fica para quem precisar o código de upload.php:

<?php
include_once 'dbconfig.php';
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
$new_size = $_FILES["fileToUpload"]["size"];
$file_type = $imageFileType;
$final_file = $_FILES["fileToUpload"]["name"];
// Check if file already exists
if (file_exists($target_file)) {
   echo "Sorry, file already exists.";
   $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 50000000) {
   echo "Sorry, your file is too large.";
   $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "pdf" ) {
   echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
   $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
   echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
   if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
           echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
$sql="INSERT INTO tbl_ficheiros(ficheiro,tipo,tamanho) VALUES('$final_file','$file_type','$new_size')";
       mysql_query($sql);
   } else {
           echo "Sorry, there was an error uploading your file.";
   }
}
?>
Edited by DreamOn

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.