Upload afbeeldingen naar server / database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bryan De Baar

Bryan De Baar

18/08/2018 20:35:53
Quote Anchor link
Hallo,


Via een upload formulier wil ik graag afbeeldingen uploaden naar de server en verwerken in een database. De connectie met de database werkt, echter wil het uploaden niet lukken.

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
45
46
47
48
49
50
51
52
<?php
if(isset($_POST['submit'])){
    // Include database config
    include_once 'dbconfig.php';
    
    // File upload config
    $targetDir = "uploads/";
    $allowTypes = array('jpg','png','jpeg','gif');
    
    $statusMsg = $errorMsg = $insertValuesSQL = $errorUpload = $errorUploadType = '';
    if(!empty(array_filter($_FILES['files']['name']))){
        foreach($_FILES['files']['name'] as $key=>$val){
            // File upload path
            $fileName = basename($_FILES['files']['name'][$key]);
            $targetFilePath = $targetDir . $fileName;
            
            // Check het file type
            $fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);
            if(in_array($fileType, $allowTypes)){
                // Upload file naar server
                if(move_uploaded_file($_FILES["files"]["tmp_name"][$key], $targetFilePath)){
                  
                    $insertValuesSQL .= "('".$fileName."', NOW()),";
                }
else{
                    $errorUpload .= $_FILES['files']['name'][$key].', ';
                }
            }
else{
                $errorUploadType .= $_FILES['files']['name'][$key].', ';
            }
        }

        
        if(!empty($insertValuesSQL)){
            $insertValuesSQL = trim($insertValuesSQL,',');
            //file naam in database
            $insert = $db->query("INSERT INTO images (file_name, uploaded_on) VALUES $insertValuesSQL");
            if($insert){
                $errorUpload = !empty($errorUpload)?'Upload Error: '.$errorUpload:'';
                $errorUploadType = !empty($errorUploadType)?'File Type Error: '.$errorUploadType:'';
                $errorMsg = !empty($errorUpload)?'<br/>'.$errorUpload.'<br/>'.$errorUploadType:'<br/>'.$errorUploadType;
                $statusMsg = "Files are uploaded successfully.".$errorMsg;
            }
else{
                $statusMsg = "Sorry, there was an error uploading your file.";
            }
        }
    }
else{
        $statusMsg = 'Please select a file to upload.';
    }

    
    // Display status bericht
    echo $statusMsg;
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<form action="" method="post" enctype="multipart/form-data">
    Select Image Files to Upload:
    <input type="file" name="files[]" multiple>
    
    <input class="upload-btn" type="submit" name="submit" value="UPLOAD">
</form>


Ik krijg ook geen succesmelding of error terug, alleen er geen afbeeldingen zijn geselecteerd krijg ik netjes een foutmelding.

Zie ik iets over het hoofd, wie oo wie kan mij helpen?

Gr. Bryan
Gewijzigd op 18/08/2018 20:39:44 door Bryan De Baar
 
PHP hulp

PHP hulp

21/11/2024 20:09:32
 
- Ariën  -
Beheerder

- Ariën -

18/08/2018 20:50:24
Quote Anchor link
Wat meldt: $_FILES['files']['error']?
Zie ook : http://php.net/manual/en/features.file-upload.errors.php
 
Bryan De Baar

Bryan De Baar

18/08/2018 21:00:33
Quote Anchor link
Als ik een jpg, png, jpeg of gif pak dan geenft deze niets aan, pak ik een foutief bestand dan krijg ik als output: array
 
- Ariën  -
Beheerder

- Ariën -

18/08/2018 21:18:02
Quote Anchor link
Onthoud ook dat je op mime-types moet controleren.
Waarom gebruik je geen kant en klare class, zoals de Uploadclass van verot.net?
 
Bryan De Baar

Bryan De Baar

18/08/2018 23:05:59
Quote Anchor link
Na wat stoeien heb ik het volgende gekregen maar snap niet waarom.

De php code heb ik in een aparte file gezet. Vervolgens heb ik in het form element bij action de link naar de php file gezet.
Nu werk het wel, maar word je ook gelijk naar de php geleid en krijg je slechts de echo terug, terwijl ik dit op de upload pagina wil hebben.

Wat is het verschil dat de php code niet op de zelfde pagina werkt? Dit zou toch normaal wel moeten gaan?
 
- Ariën  -
Beheerder

- Ariën -

18/08/2018 23:13:48
Quote Anchor link
Het zou precies hetzelfde moeten werken, lijkt mij.
 
Bryan De Baar

Bryan De Baar

19/08/2018 10:43:03
Quote Anchor link
Deze pagina word geinclude in de indexpagina, zou het zijn dat dit mis gaat en hier een aparte pagina voor moet aanmaken?
 
Obelix Idefix

Obelix Idefix

19/08/2018 11:26:20
Quote Anchor link
En als je gaat debuggen met de volledige code in 1 pagina?
Waar loopt het proces vast? Of doorloopt die wel alles, maar gebeurt er niets.
Met een paar simpele echo's kun je dat eenvoudig testen.

Mij is hier altijd gezegd dat je beter

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($_SERVER['REQUEST_METHOD'] == "POST" ?>


kunt gebruiken dan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if(isset($_POST['submit'])) ?>
Gewijzigd op 19/08/2018 11:27:11 door Obelix Idefix
 
Thomas van den Heuvel

Thomas van den Heuvel

19/08/2018 14:13:58
Quote Anchor link
@Bryan, wat verwacht je precies dat array_filter() in dit verhaal doet en wat is de retourwaarde hiervan? Met deze constructie ben ik niet bekend, en waarschijnlijk is 'ie daarvoor ook niet bedoeld?

En wat @Ariën zegt, hoe luidt de error status van elk van de uploads?

Ik hoop ook niet dat je in een publieke directory aan het uploaden bent?

Waarschijnlijk bestaat het bestand $targetFilePath op regel 18 ook nog niet, want dat is de locatie waar je het bestand naar verplaatst op regel 21?

Je zou in principe gewoon de extentie uit de name kunnen vissen, maar een extentie hoeft niet per definitie representatief te zijn voor het bestandstype. Je kunt een tekstbestand prima opslaan als (met extentie) jpg en andersom.
 



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.