Avatar billede lsskaarup Nybegynder
24. juli 2007 - 23:25 Der er 13 kommentarer og
1 løsning

Hvorfor uploader den ikke PDF filen

Jeg har problemer med at få følgende kode til at uploade en PDF fil, hvorfor det?

if (isset($_POST['submit']) && $_POST['submit'] == "Upload" && $_POST['rettype'] == "ny") {
    $billede = $_FILES['nyhedsBillede']['name'];
    $type = strrchr($billede, ".");// For at finde filtypen til tjek af jpeg kontra jpg
    $billede = strtolower($billede);// ændre alt til små bogstaver
    $dest = $uploaddir . $billede;// Stien til det store billede
    $dest = tjekfilnavn($dest);
    $thumbnail;// Til stien til thumbnail
    $tekst = $_POST['nyhedsTekst'];
    $overskrift = $_POST['nyhedsOverskrift'];
    $oprettelsesDato = date('Ymd');
    $source = $_FILES['nyhedsBillede']['tmp_name'];
    if (is_uploaded_file($source)) {
        if (tjektype($_FILES['nyhedsBillede']['type'])) {
            if (move_uploaded_file($source, $dest)) {
                list($width, $height) = getimagesize($dest);
                $new_width = 100;
                $krympefaktor = $new_width/$width;
                $new_height = round($height * $krympefaktor);
                $destinationImage = imagecreatetruecolor($new_width, $new_height);
                if(tjektype($_FILES['nyhedsBillede']['type'] == "image/pjpeg")) {
                    $sourceImage = imagecreatefromjpeg($dest);
                    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    if ($type == ".jpeg") {
                        imagejpeg($destinationImage, $thumbnail_dir.basename($billede, ".jpeg")."_thumb.jpeg");
                        $thumbnail = $thumbnail_dir.basename($billede, ".jpeg")."_thumb.jpeg";// Stien til thumbnail
                    } else {
                        imagejpeg($destinationImage, $thumbnail_dir.basename($billede, ".jpg")."_thumb.jpg");
                        $thumbnail = $thumbnail_dir.basename($billede, ".jpg")."_thumb.jpg";// Stien til thumbnail
                    }
                } else if(tjektype($_FILES['nyhedsBillede']['type'] == "image/png")) {
                    $sourceImage = imagecreatefrompng($dest);
                    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    imagepng($destinationImage, $thumbnail_dir.basename($billede, ".png")."_thumb.png");
                    $thumbnail = $thumbnail_dir.basename($billede, ".png")."_thumb.png";// Stien til thumbnail
                } else if(tjektype($_FILES['nyhedsBillede']['type'] == "application/pdf")) {
                    $dest = $uploadpdfdir . $billede;
                    $dest = str_replace(" ", "_", $dest);
                    echo $dest = tjekfilnavn($dest);
                    if(!is_uploaded_file($_FILES['nyhedsBillede']['tmp_name'])) {
                        echo "true"."<br>";
                    }                   
                    echo move_uploaded_file($_FILES['nyhedsBillede']['tmp_name'], $dest);

                    //$sourceImage = imagecreatefromgif($dest);
                    //imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    //imagegif($destinationImage, $thumbnail_dir.basename($billede, ".gif")."_thumb.gif");
                    $thumbnail = $thumbnailpdf_dir."pdf.png";// Stien til thumbnail
                }
               
                chmod($dest, 0777);
                chmod($thumbnail, 0777);
               
                //mysql_query("INSERT INTO Nyhed (tekst, sti, thumbnail, overskrift, dato)
                //            VALUES ('$tekst', '$dest', '$thumbnail', '$overskrift', '$oprettelsesDato')") or die (mysql_error());
                //mysql_close();
                $besked = "Tekst og billede gemt";
            } else {
                $besked = "Der blev ikke gemt noget";
            }
        } else {
            $besked = "Du prøvede at gemme et billedeformat som ikke er tilladt. Du kan gemme billeder i JPG/JPEG og PNG formaterne.";
        }
    } else {
        mysql_query("INSERT INTO Nyhed SET sti='images/nyheder/intetBillede.png',
                    thumbnail='images/nyheder/thumbnail/intetBillede_thumb.png',
                    overskrift='$overskrift', tekst='$tekst', dato='$oprettelsesDato'");
        mysql_close();
        header("location: adminNyhed.php");
    }
}
Avatar billede jakobdo Ekspert
25. juli 2007 - 20:49 #1
Virker koden:

if(tjektype($_FILES['nyhedsBillede']['type'] == "application/pdf")) {
                    $dest = $uploadpdfdir . $billede;
                    $dest = str_replace(" ", "_", $dest);
                    echo $dest = tjekfilnavn($dest);
                    if(!is_uploaded_file($_FILES['nyhedsBillede']['tmp_name'])) {
                        echo "true"."<br>";
                    }                 
                    echo move_uploaded_file($_FILES['nyhedsBillede']['tmp_name'], $dest);

Skriver den de info ud du forventer?

Og er du overhovedet sikker på tjekket hvor den sammenligner typen med: application/pdf går godt?
Avatar billede lsskaarup Nybegynder
26. juli 2007 - 00:33 #2
Okay, nu fatter jeg ingenting.

Jeg ville lige tjekker for at være helt sikker på jeg svarede det rigtige og hvilke echo der virkede, og så opdager jeg sgu' at den oploader filen nu... :-?

Det må jeg vidst hellere sove på.
Avatar billede jakobdo Ekspert
26. juli 2007 - 08:28 #3
Som jeg også har skrevet til en anden som leger med en upload form, så er det ikke sikkert at bruge TYPE til at tjekke filtype med.
Du bør gøre som i artiklen her: http://www.eksperten.dk/artikler/1098
Avatar billede lsskaarup Nybegynder
27. juli 2007 - 14:34 #4
jakobdo -> Det vil jeg kigge på, i første omgang, skal jeg dog bare have denne kode til at virke.

Det mærkelige er at nu, vil den igen ikke uploade pdf filen.

Af output får jeg
echo $dest = tjekfilnavn($dest);
samt
echo "true"."<br>";

Hvilket må betyder at is_uploaded_file ikke fanger filen, men hvorfor?
Avatar billede lsskaarup Nybegynder
27. juli 2007 - 15:05 #5
Hmm, når jeg prøver at udskrive true/false med
echo is_uploaded_file($_FILES['nyhedsBillede']['tmp_name']);
så får jeg slet ikke noget ud.
Avatar billede jakobdo Ekspert
27. juli 2007 - 18:09 #6
Hvor stor er den fil du prøver at uploade?
Avatar billede lsskaarup Nybegynder
28. juli 2007 - 13:15 #7
Den er på 9 KB, så det burde jo ikke være størrelsen, der stoppede det.
Avatar billede jakobdo Ekspert
29. juli 2007 - 11:10 #8
Nej, prøv at tilføj dette kode i toppen:

echo '<pre>';
print_r($_FILES);
echo '</pre>';
Avatar billede lsskaarup Nybegynder
29. juli 2007 - 15:34 #9
Så returnere den følgende:

Array
(
    [nyhedsBillede] => Array
        (
            [name] => Pablo Neruda.pdf
            [type] => application/pdf
            [tmp_name] => /tmp/php5QxdcY
            [error] => 0
            [size] => 8680
        )

)
Avatar billede jakobdo Ekspert
30. juli 2007 - 19:13 #10
Det ser jo godt nok ud.
Så må du igang med at fejlsøge funktioner der arbejder med filen.
Avatar billede lsskaarup Nybegynder
28. november 2007 - 10:49 #11
Hov kom helt fra dette problem og har sgu så glemt det. Må nok hellere lukke og oprette et nyt.

jakobdo smider du lige et svar, du skal have point for den tid du alligevel brugte herpå.
Avatar billede jakobdo Ekspert
28. november 2007 - 20:23 #12
Svar!
Avatar billede jakobdo Ekspert
25. februar 2008 - 14:34 #13
Takker for point.
Avatar billede lsskaarup Nybegynder
25. februar 2008 - 22:17 #14
Selv tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester