Ik wil aan de slag met een javascript library die multiple fileupload mogelijk maakt, via graceful degradation, die standaard, wanneer aanwezig, gebruik moet gaan maken van de nieuwe HTML5 mogelijkheden, zoals de File API. Omdat dit een clientside javascript library wordt, wil ik een beetje de standaarden proberen te houden, zodat hij voor elke serverside taal ingezet kan worden, zonder dat je veel dingen hoeft te verbouwen.
Even een verzameling aan serverside talen, waar ik primair rekening wil houden:
Ik wil via de multifile upload de files posten als vorm van array. Nu moet je die ook meerdere malen in de pagina kunnen gebruiken. Dus je krijgt soort van bestanden die in dezelfde group behoren. Omdat ik dus graceful degradation wil gebruiken, krijg je ook meerdere file upload boxen als er totaal geen ondersteuning is voor multi file upload. Dit is een voorbeeld:
Nu moet je bij php, als je arrays wil posten, [] of [index] achter de waarden zetten. Dit hoeft echter niet bij ASP.NET bijvoorbeeld.
Ik was pas bezig met een OAuth clientside library en kwam ik in de OAuth documentatie de volgende citaat tegen:
Ik heb even wat test code ervoor gebouwd:
Resultaat:
Nu heb ik het idee dat PHP die arrays niet volgens de standaarden behandeld en de rest van de talen dat wel goed oppakt. Welke manier moet ik nu aanhouden om array's te posten, zodat het zoveel mogelijk serverside taal onafhankelijk wordt?
En moet ik nog rekening houden met files uploaden naar verschillende serverside talen?
Even een verzameling aan serverside talen, waar ik primair rekening wil houden:
- PHP
- JAVA
- ASP.NET
- Ruby
- Python
- Perl
Ik wil via de multifile upload de files posten als vorm van array. Nu moet je die ook meerdere malen in de pagina kunnen gebruiken. Dus je krijgt soort van bestanden die in dezelfde group behoren. Omdat ik dus graceful degradation wil gebruiken, krijg je ook meerdere file upload boxen als er totaal geen ondersteuning is voor multi file upload. Dit is een voorbeeld:
code:
1
2
3
| <input type="file" name="fileupload" /> <input type="file" name="fileupload" /> <input type="file" name="fileupload" /> |
Nu moet je bij php, als je arrays wil posten, [] of [index] achter de waarden zetten. Dit hoeft echter niet bij ASP.NET bijvoorbeeld.
Ik was pas bezig met een OAuth clientside library en kwam ik in de OAuth documentatie de volgende citaat tegen:
Hier zie je 2 waarden op dezelfde variable f. Deze moeten naar mijn inschatting als array behandeld worden. Dit pakt PHP eigenlijk niet op.If two or more parameters share the same name, they are sorted by their value. For example:
code:
1 a=1, c=hi%20there, f=25, f=50, f=a, z=p, z=t
Ik heb even wat test code ervoor gebouwd:
PHP:
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
| <form method="post"> PHP array: <input type="text" name="phparray[]" value="a" /><br/> <input type="text" name="phparray[]" value="b" /><br/> <input type="text" name="phparray[]" value="c" /><br/> <p></p> HTTP array: <input type="text" name="httparray" value="1" /><br/> <input type="text" name="httparray" value="2" /><br/> <input type="text" name="httparray" value="3" /><br/> <p></p> <h3>File upload</h3> PHP array: <input type="file" name="phparrayfile[]" /><br/> <input type="file" name="phparrayfile[]" /><br/> <input type="file" name="phparrayfile[]" /><br/> <p></p> HTTP array: <input type="file" name="httparrayfile" /><br/> <input type="file" name="httparrayfile" /><br/> <input type="file" name="httparrayfile" /><br/> <p></p> <input type="submit" name="submit" value="Submit" /> <pre style="border: solid 1px black"> Post: <?php var_dump($_POST); ?> File: <?php if (!empty($_FILE)) var_dump($_FILE); ?> </pre> </form> |
Resultaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| array 'phparray' => array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) 'httparray' => string '3' (length=1) 'phparrayfile' => array 0 => string '' (length=0) 1 => string '' (length=0) 2 => string '' (length=0) 'httparrayfile' => string '' (length=0) 'submit' => string 'Submit' (length=6) |
Nu heb ik het idee dat PHP die arrays niet volgens de standaarden behandeld en de rest van de talen dat wel goed oppakt. Welke manier moet ik nu aanhouden om array's te posten, zodat het zoveel mogelijk serverside taal onafhankelijk wordt?
En moet ik nog rekening houden met files uploaden naar verschillende serverside talen?