drag and drop upload komt niet in gewenste directory terecht

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jack Maessen

Jack Maessen

23/05/2016 11:23:41
Quote Anchor link
Loop tegen een probleem aan wat ik niet snap:
Ik heb een drag and drop area en een gewone input voor file uploads.
De drag and drop:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
    <div class="sfmform" id="drop-area"><h3 class="drop-text">Drag and Drop Images Here</h3></div>

En de gewone form:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
    <form class="sfmform" action="" method="post" enctype="multipart/form-data">
             <b>Upload Files</b>
             <br /><br />
                <input type="file" name="file" id="file" />
                <br />
                <input type="submit" class="Button Primary" name="upload" value="Upload" />
                <br /><br />
                
    </form>


Dit is de afhandeling met php (die staat in hetzelfde bestand boven de form en boven de drag and drop area:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
    if($_SERVER['REQUEST_METHOD'] == "POST") {
       // file is ready to be uploaded      
       $tmpFilePath = $_FILES['file']['tmp_name'];
       $newFilePath = $dir.'/' . $_FILES['file']['name'];
       if(move_uploaded_file($tmpFilePath, $newFilePath)) {
       //echos succesvol geupload
       }
    }

De var $dir wordt uitgelezen via de url op deze manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
// read actual dir from url
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$strArr = explode("=",$actual_link);
$CurrentPath = $strArr[1];

if(isset($_GET['dir'])) {
$dir = $CurrentPath;
}

Dus als mijn url string er zo uitziet: website.nl/sfm?dir=uploads/sfm/root/folder1
krijt $dir de volgende waarde toegekend: uploads/sfm/root/folder1
Dit is mijn ajax call:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
    function uploadFormData(formData) {
        $.ajax({
        url: "sfm",
        type: "POST",
        data: formData,
        contentType:false,
        cache: false,
        processData: false,
        success: function(data){
            $('#drop-area').append(data);
        }
    });
    }


Probleem: doe ik de upload via de form dan komt ie netjes terecht in de waarde wat $dir heeft; die wordt uitgelezen via de url
Doe ik de upload via drag and drop dan komt de file ALTIJD in de root terecht; terwijl hij toch dezelfde php afhandeling voor uploaden volgt. Maw: hij kan blijkbaar de waarde van $dir niet lezen.
Als ik in de php het volgende neerzet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
// file is ready to be uploaded      
        $tmpFilePath = $_FILES['file']['tmp_name'];
        $dir ="uploads/sfm/root/folder1";    // handmatig geset
        $newFilePath = $dir.'/' . $_FILES['file']['name'];

plaats ie de upload via drag and drop WEL in folder1.

Het betreft hier 1 file, sfm.php waarin de php staat, daaronder de form en de ajax call.
Kan iemand me zeggen waarom de variabele waarde van $dir niet uitgelezen kan worden via drag and drop en wel via de normale form upload? Beiden volgen exact dezelfde ph afhandeling voor upload, zoals hierboven
 
PHP hulp

PHP hulp

22/11/2024 10:21:31
 
Ben van Velzen

Ben van Velzen

23/05/2016 11:42:24
Quote Anchor link
Om te beginnen: waarom vorm je $dir op zo'n idiote manier? Dezelfde waarde staat in $_GET['dir']. In je AJAX call geef je geen dir mee, je geeft als uploadpath sfm, maar dit moet sfm?dir=... zijn.
 
Jack Maessen

Jack Maessen

23/05/2016 12:08:37
Quote Anchor link
je hebt gelijk @Ben van Velzen
Ik was in de veronderstelling dat in de ajax de url moest verwijzen naar het bestand waarin de php afhandeling staat, en dat is sfm.php. Hij deed dus een request op dezelfde pagina. Maar daar moet dus het pad instaan.
dit werkt nu goed:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
function uploadFormData(formData) {
    $.ajax({
    url: "<?php 'sfm?dir='.$dir; ?>",
    type: "POST",
    data: formData,
    contentType:false,
    cache: false,
    processData: false,
    success: function(data){
        $('#drop-area').append(data);
    }
});
}

Dankje voor deze hulp
Gewijzigd op 23/05/2016 12:17:19 door Jack Maessen
 



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.