Hoe post ik een variabele met formdata?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Senior DevOps-ontwikkelaar eIDAS

Functie­omschrijving Burgers en bedrijven veilig en betrouwbaar digitaal toegang geven tot diensten en producten van het ministerie van Economische Zaken en Klimaat. Als senior DevOps-ontwikkelaar bouw je daar letterlijk aan mee. En dat doe je bij DICTU: een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Jij werkt mee aan de doorontwikkeling van eIDAS, dat staat voor Electronic IDentification Authentication and trust Services. Deze koppeling maakt de grensoverschrijdende authenticatie op overheidswebsites binnen de Europese Unie mogelijk. Het ministerie van Economische Zaken en Klimaat heeft één moderne toegangspoort voor zijn diensten en inspecties. Enkele daarvan zijn dankzij eIDAS inmiddels

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Snelle Jaap

Snelle Jaap

29/08/2018 19:36:10
Quote Anchor link
Ik probeer een javascript variabele te posten met formdata maar om de een of andere reden is de inhoud altijd leeg.

Op drie verschillende manieren heb ik geprobeerd het aan de praat te krijgen zonder succes.

Dit is mijn code op het moment:

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
<script>
$(function () {
    'use strict';
    var url = window.location.hostname === 'site.nl/demo/server/php/' ?
                '//site.nl/' : 'demo/server/php/';
    $('#fileupload').fileupload({
        url: url,
        dataType: 'json',
        formData: [
          { name: 'custom_dir', value: '/fileupload/<?PHP echo $_GET['bedrijf'] ?>/<?PHP echo $_GET['alias'] ?>/' },
          { name: 'cat_id', value: '<?PHP echo $gtc['id']; ?>'},
          { name: 'name', value: $( "#filename" ).val()},
      ],
      add: function (e, data) {
            data.context = $('<button/>').text('Uploaden starten').addClass('font-15 btn btn-secondary btn-lg waves-effect btnadd fullwidth')
                .appendTo('.uploadbutton')
                .click(function () {
                    data.submit();
                });
        },
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p/>').text(file.name).appendTo('#files');
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('#progress .progress-bar').css(
                'width',
                progress + '%'
            );
        }
    }).prop('disabled', !$.support.fileInput)
        .parent().addClass($.support.fileInput ? undefined : 'disabled');
});
</script>


Het gaat om dit stuk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
formData: [
          { name: 'custom_dir', value: '/fileupload/<?PHP echo $_GET['bedrijf'] ?>/<?PHP echo $_GET['alias'] ?>/' },
          { name: 'cat_id', value: '<?PHP echo $gtc['id']; ?>'},
          { name: 'name', value: $( "#filename" ).val()},
      ],


De twee bovenstaande waardes worden netjes gepost maar de onderste blijft leeg, dat ziet er zo uit:

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
------WebKitFormBoundary59O7sCnGuJdp2LnV
Content-Disposition: form-data; name="custom_dir"

/fileupload/nieuw_bedrijf/inkoop_van_diensten/
------WebKitFormBoundary59O7sCnGuJdp2LnV
Content-Disposition: form-data; name="cat_id"

95
------WebKitFormBoundary59O7sCnGuJdp2LnV
Content-Disposition: form-data; name="name"


------WebKitFormBoundary59O7sCnGuJdp2LnV
Content-Disposition: form-data; name="files[]"; filename="198970050.pdf"
Content-Type: application/pdf


------WebKitFormBoundary59O7sCnGuJdp2LnV--


Naast bovenstaande manier heb ik het ook zo geprobeerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
var filename = $( "#filename" ).val();


Met daaronder dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
{ name: 'name', value: filename},


Ook dit blijft leeg.

Ten slotte probeerde ik het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
var input = $('#filename');

//met dan daaronder

{ name: 'name', value: input.val()},


Wat doe ik verkeerd? Het vreemde is, als ik mijn input veld een standaard waarde geef, dan werkt het wel. Maarja ik wil natuurlijk dat mensen zelf de naam aan kunnen geven ipv dat dit vooraf vast staat...
 
PHP hulp

PHP hulp

22/09/2020 12:56:05
 
Thomas van den Heuvel

Thomas van den Heuvel

29/08/2018 23:52:38
Quote Anchor link
Dit zal iig nooit gelijk zijn aan een hostname:
site.nl/demo/server/php/

Daarnaast weet ik ook niet of je via $_GET parameters wilt injecteren in je JavaScript, weet niet precies wat de insteek is maar ik denk dat er andere/betere manieren zijn.

Als #filename het id is van een uploadveld, daar kun je sowieso weinig of niets mee, dit wordt afgeschermd, waarschijnlijk mede uit veiligheidsoverwegingen. Als je een custom naam wilt opgeven zul je hiervoor een apart veld moeten opgeven denk ik. Ook zul je bij het uploaden moeten controleren of je niet toevallig iets aan het overschrijven bent misschien.

Het is ook handig als je erbij vermeldt of / welke plugin/library of wat dan ook je hiervoor gebruikt? Is dit de eerder vermelde blueimp? Heb je de documentatie aldaar bekeken? En mist er toevallig geen leading slash in /demo/server/php/? Even uitproberen en debuggen maar.
 
Rob Doemaarwat

Rob Doemaarwat

30/08/2018 00:49:46
Quote Anchor link
Dit hele circus wordt al uitgevoerd op het moment dat je pagina laadt. Op dat moment zal die #filename nog geen waarde hebben. Geen idee hoe, maar je zult die formData pas moeten schrijven nadat er een keuze is gemaakt (en voordat ie 'm upload).

Maar zit de originele bestandsnaam niet gewoon in je $_FILES['files']['name']?
 
Snelle Jaap

Snelle Jaap

30/08/2018 10:56:38
Quote Anchor link
@thomas Het is mijn eigen inputveld (gewoon tekst) die ik heb toegevoegd. Ik heb namelijk zelf een functie toegevoegd om naast het uploaden ook de uploadgegevens toe te voegen in mijn database (custom directory, en id van de pagina waar vanaf wordt geupload), nu wil ik ook de optie meegeven dat iemand een eigen naam kan kiezen voor het bestand welke dan in een lijst weergeven wordt. Het gaat idd om blueimp. Slash haalt niks uit, alles werkt ook naar behoren (ook het opslaan in de database van de custom directory en id) maar de naam blijft leeg.

@rob Ik zoek niet de filename van het bestand, die weet ik wel te achterhalen (zit al in mijn formdata post wanneer ik in mijn network tab kijk). Wat ik probeer is de mogelijkheid te creeeren om zelf een naam te kiezen voor een bestand.
 
Rob Doemaarwat

Rob Doemaarwat

30/08/2018 13:04:33
Quote Anchor link
Maar, dan blijft m'n eerste opmerking overeind: alles in $('#fileupload').fileupload({ ... }) wordt bij de initialisatie van de pagina uitgevoerd. Wat de gebruiker dus daarna in het veld #filename plaatst komt niet meer in de formData. Op de XHR submit zul je dus in moeten (kunnen) haken.
 



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.