move_uploaded_file plaatst het bestand niet in de folder.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- DHU -

- DHU -

20/11/2018 20:06:15
Quote Anchor link
Hoi...

Zouden jullie eens met me mee willen kijken aub? Ik zal het ongetwijfeld niet goed doen hoor... weet ik. maar ik kom met zoekopdrachten op het web toch uit op onderstaande. Ik wil graag een foto uploaden. Nu wordt de naam van de foto keurig opgeslagen in de database. MAar het bestand wordt van de temp niet verplaatst naar de folder waar die moet komen. Deze blijft gewoon leeg. Krijg ook geen error melding oid. Maar zit 'm de crux? Geen idee... Julie vast wel ;-)

Op voorhand bedankt voor het meedenken,
Dirk

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
            function berichttoevoegen(){
                global $MySQL;
                
                if (isset($_POST['submit'])) {

                    $pageNaam             = mysqli_real_escape_string($MySQL, $_POST['page-onderwerp']);
                    $pageData            = mysqli_real_escape_string($MySQL, $_POST['page-bericht']);
                    $pageGebruikerId    = mysqli_real_escape_string($MySQL, $_POST['page-gebruikerId']);
                    
                    $pageFoto        = $_FILES['page-foto']['name'];
                    $profile_tmp     = $_FILES['page-foto']['tmp_name'];
                    $img_folder        = "img/berichten/";
                    move_uploaded_file($profile_tmp, $img_folder.$pageFoto);
                    
                    
                $aanmaken = "INSERT INTO page
                
                            (pageNaam, pageData, pageFoto, pageGebruikerId)
                
                            VALUES
                            
                            ('$pageNaam', '$pageData', '$pageFoto', '$pageGebruikerId')";
                                                    
                    if (mysqli_query($MySQL, $aanmaken)){
                    echo '<p><h1>Er is een nieuw bericht toegevoegd aan de database</h1>';
                }else{
                    echo 'Sorry,'.mysqli_error($MySQL);
                }
                }
            
            ?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
            <form action="?module=beheer&actie=berichttoevoegen" method="post" enctype="multipart/form-data">
             <table cellpadding="5" border="0">
                    <tr>
                        <td colspan="2"><font color="green" size="4" face="comic sans ms">Bericht toevoegen</font></td>
                    </tr>
                    <tr>
                    <tr>
                        <td>Onderwerp</td>
                        <td><input type="text" name="page-onderwerp" size="40%" required="required"></td>
                    </tr>
                    <tr>
                        <td>Bericht</td>
                        <td><textarea rows="8" cols="35" name="page-bericht"></textarea></td>
                    </tr>
                    <tr>
                        <td>Foto</td>
                        <td><input type="file" name="page-foto"></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>
                        <input type="hidden" name="page-gebruikerId" value="<?php echo $_SESSION['loginId']; ?>">
                        
                        </td>
                    <tr>
                        <td><input type="submit" name="submit" value="Opslaan"><a href="?module=beheer"><input type="button" value="Annuleren"></a></td>
                    </tr>
            </table>
            </form>
            <?php
            
            }
Gewijzigd op 20/11/2018 20:09:02 door - DHU -
 
PHP hulp

PHP hulp

19/04/2024 22:40:50
 
Michael -

Michael -

20/11/2018 20:17:48
Quote Anchor link
Check goed of de map bestaat en of deze wel schrijfrechten (chmod) heeft.
Ik zou gebruik maken van mkdir. Als de map niet bestaat wordt deze gemaakt en je kunt gelijk de rechten meegeven.
 
- Ariën  -
Beheerder

- Ariën -

20/11/2018 20:20:51
Quote Anchor link
Sowieso zou ik aanraden om een if-else controle te plaatsen op move_uploaded_file().
Straks gaat er wat mis, en staan foutmeldingen uit, en staat iedereen raar te kijken dat zijn bestand niet geüpload is.
 
- DHU -

- DHU -

20/11/2018 20:34:51
Quote Anchor link
Michael - op 20/11/2018 20:17:48:
Check goed of de map bestaat en of deze wel schrijfrechten (chmod) heeft.
Ik zou gebruik maken van mkdir. Als de map niet bestaat wordt deze gemaakt en je kunt gelijk de rechten meegeven.


Hoi Michael,
De map bestaat. Inmiddels tig keren gecontroleerd. Vooralsnog is het een lokale map op mijn laptop.

Toevoeging op 20/11/2018 20:37:42:

- Ariën - op 20/11/2018 20:20:51:
Sowieso zou ik aanraden om een if-else controle te plaatsen op move_uploaded_file().
Straks gaat er wat mis, en staan foutmeldingen uit, en staat iedereen raar te kijken dat zijn bestand niet geüpload is.



Hoi Ariën,
Ik had oorspronkelijk een if-else ingebakken. Ik had een msg bij zowel als het bestand goed is verplaatst maar bij een niet gelukt upload een melding dat er iets mis is gegaan.
Zelfs deze handling werkt niet. Ik kreeg geen van beide berichten te zien. Dus ik heb deze er even tussen uitgeslootp om de codering zo klein mogelijk te krijgen om te kijken waar ik de mist inga
Gewijzigd op 20/11/2018 20:38:04 door - DHU -
 
Rob Doemaarwat

Rob Doemaarwat

20/11/2018 21:06:27
Quote Anchor link
En als je de $img_folder even absoluut maakt, dus bijvoorbeeld "c:/ergens/". Komt ie dan wel op z'n plek?

Nog een melding in het errorlog? Of laat alle foutmeldingen op het scherm verschijnen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
ini_set('display_errors',true);
error_reporting(E_ALL);
 
- DHU -

- DHU -

20/11/2018 21:51:03
Quote Anchor link
Rob Doemaarwat op 20/11/2018 21:06:27:
En als je de $img_folder even absoluut maakt, dus bijvoorbeeld "c:/ergens/". Komt ie dan wel op z'n plek?

Nog een melding in het errorlog? Of laat alle foutmeldingen op het scherm verschijnen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
ini_set('display_errors',true);
error_reporting(E_ALL);


een absolute padverwijzing geeft vooralsnog ook nog niet de solution.
het is me niet duidelijk waar ik die error reporting code moet plaatsen. Ik heb 'm nu net boven de move_uploaded_file() geplaatst... maar je raad het al. d'r gebeurt niets :-)


Toevoeging op 20/11/2018 21:51:04:

Rob Doemaarwat op 20/11/2018 21:06:27:
En als je de $img_folder even absoluut maakt, dus bijvoorbeeld "c:/ergens/". Komt ie dan wel op z'n plek?

Nog een melding in het errorlog? Of laat alle foutmeldingen op het scherm verschijnen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
ini_set('display_errors',true);
error_reporting(E_ALL);


een absolute padverwijzing geeft vooralsnog ook nog niet de solution.
het is me niet duidelijk waar ik die error reporting code moet plaatsen. Ik heb 'm nu net boven de move_uploaded_file() geplaatst... maar je raad het al. d'r gebeurt niets :-)
 
Rob Doemaarwat

Rob Doemaarwat

20/11/2018 22:59:53
Quote Anchor link
En als je dit rond de move_uploaded_file(...) doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
print("VOOR move_uploaded_file($profile_tmp, $img_folder.$pageFoto)");
$result = move_uploaded_file($profile_tmp, $img_folder.$pageFoto);
print("NA move_uploaded_file($profile_tmp, $img_folder.$pageFoto) = $result");
 
- DHU -

- DHU -

20/11/2018 23:14:14
Quote Anchor link
Rob Doemaarwat op 20/11/2018 22:59:53:
En als je dit rond de move_uploaded_file(...) doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
print("VOOR move_uploaded_file($profile_tmp, $img_folder.$pageFoto)");
$result = move_uploaded_file($profile_tmp, $img_folder.$pageFoto);
print("NA move_uploaded_file($profile_tmp, $img_folder.$pageFoto) = $result");


dan is onderstaande het resultaat:

VOOR move_uploaded_file(, img/berichten/.DPP_0021.JPEG)
NA move_uploaded_file(, img/berichten/.DPP_0021.JPEG) =
 
Thomas van den Heuvel

Thomas van den Heuvel

21/11/2018 00:38:18
Quote Anchor link
Zoals @Michael aangaf is het bestaan van een directory alleen niet genoeg, deze moet ook de juiste schrijfrechten hebben.

Die directory "img/berichten" kan volgens jou wel bestaan, maar dat moet het systeem ook vinden.

Controleer anders een wat dingen met is_dir() en/of is_writable().
 
Rob Doemaarwat

Rob Doemaarwat

21/11/2018 08:16:13
Quote Anchor link
$profile_tmp is dus leeg. Dat zou betekenen dat $_FILES['page-foto']['tmp_name'] leeg is, en er dus iets fout gegaan is bij het uploaden.

Doe eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
print_r($_FILES);

Kijken of er een error in zit (of wat er uit de rest is af te leiden).

(het feit dat er "niks" achter de "=" staat betekent dat het resultaat van move_uploaded_file() false is, er wordt dus inderdaad niks verplaatst)
 
- DHU -

- DHU -

21/11/2018 08:48:34
Quote Anchor link
Hey guys, eea heeft klaarblijkelijk met de bestandsgrootte van de foto zelf te maken. Deze was in oorspronkelijk formaat 3888 x 2592 pixels en 5.25 MB. Nadat ik die in Photoshop heb gehalveerd in pixesl naar 1944 x 1296 pixels en 1.75 MB werkt de move_uploaded_file() dus prima... Nu ik dit weet kan ik hier dus een check voor inbouwen en kan ik if-else weer terugzetten...

Ieder bedankt voor het meedenken .....
 
- Ariën  -
Beheerder

- Ariën -

21/11/2018 10:14:18
Quote Anchor link
Het heeft wel met de foto te maken, maar het echte probleem zit hem in de upload_max_filesize die erg laag staat ingesteld.

Hier kan je prima een goede foutafhandeling voor inbouwen aan de hand van $_FILES['file']['error']:
http://php.net/manual/en/features.file-upload.errors.php
 
- DHU -

- DHU -

21/11/2018 11:01:29
Quote Anchor link
** quoteknip **
Ik had geen max ingesteld... zal iets standaards zijn vermoed ik
Gewijzigd op 21/11/2018 11:03:40 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

21/11/2018 11:04:18
Quote Anchor link
Ja, er is standaard een max. Kijk maar eens maar phpinfo.

PS: je hoeft niet steeds het voorgaande bericht integraal te quoten. Dat leest erg lastig.
Gewijzigd op 21/11/2018 11:07:23 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

21/11/2018 16:38:44
Quote Anchor link
- Ariën - op 21/11/2018 10:14:18:
Het heeft wel met de foto te maken, maar het echte probleem zit hem in de upload_max_filesize die erg laag staat ingesteld.

Dat is niet het enige.

upload_max_filesize is de maximale grootte van één geupload bestand.

Maar dan heb je nog:
post_max_size: de maximale grootte van alle gePOSTe data.

Alsook:
memory_limit: de maximale hoeveelheid geheugen dat een script mag claimen.

Er zal dus zoiets moeten gelden:
memory_limit >= post_max_size >= upload_max_filesize.

Dit staat trouwens prima uitgelegd in de appendix van ini_set().
Gewijzigd op 21/11/2018 16:38:55 door Thomas van den Heuvel
 
- DHU -

- DHU -

22/11/2018 19:36:56
Quote Anchor link
hoi guys,
is het nog zinvol om de codering die het uiteindelijk is geworden om die hier te posten?
 
- Ariën  -
Beheerder

- Ariën -

22/11/2018 19:51:02
Quote Anchor link
Ja hoor, laat maar (als relevante code) zien wat je hebt. :-)
 
- DHU -

- DHU -

23/11/2018 10:44:47
Quote Anchor link
Het is uiteindelijk onderstaande geworden... dit werkt bij mij als een tierelier :-)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//*** bestanden upload proces
                        $target_dir = "img/blaaskalender/";
                        $blaaskalenderImage = $target_dir . basename($_FILES["fileToUpload"]["name"]);
                        $uploadOk = 1;
                        $imageFileType = strtolower(pathinfo($blaaskalenderImage,PATHINFO_EXTENSION));
                        // Controleer of het bestand een image is of dat deze niet echt is
                        if(isset($_POST["submit"])) {
                            $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
                            if($check !== false) {
                                echo "Bestand is een foto - " . $check["mime"] . ".";
                                $uploadOk = 1;
                            } else {
                                echo "Voor zover we het kunnen bepalen is dit geen foto.";
                                $uploadOk = 0;
                            }
                        }
                        // Controleer of het bestand al bestaat
                        if (file_exists($blaaskalenderImage)) {
                            echo "Sorry, dit bestand bestand bestaat al";
                            $uploadOk = 0;
                        }
                        // Controleer de grootte van het bestand
                        if ($_FILES["fileToUpload"]["size"] > 2000000) {
                            echo "Sorry, dit bestand is te groot om te kunnen uploaden.";
                            $uploadOk = 0;
                        }
                        // Sta alleen bepaalde bestandsformaten toe
                        if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
                        && $imageFileType != "gif" ) {
                            echo "Sorry, alleen bestanden met de extensies JPG, JPEG, PNG & GIF files zijn toegestaan.";
                            $uploadOk = 0;
                        }
                        // Controleer of $uploadOk is op 0 is gezet bij een foutmelding
                        if ($uploadOk == 0) {
                            echo "Sorry, het bestand is niet geupload.";
                        // wanneer alles ok is, probeer dan te uploaden
                        } else {
                            if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $blaaskalenderImage)) {
                                echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " is geupload.";
                            } else {
                                echo "Sorry, er is iets mis gegaan bij het uploaden van het bestand.";
                            }
                        }
                        //***einde bestanden upload proces
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.