Beetje lastig topic titel om te verzinnen.
Doel
Ik wil door middel van een XMLHttpRequest(); een file versturen. Ik gebruik FireFox 16.0.2. om te testen.
Relevante code
$id("upload") verwijst naar mijn upload file, namelijke upload-file.php. Dit werkt ook, want als ik via Firebug bekijk zie ik het volgende terug komen bij verzoekheaders:
De php code
Echter, mijn output van upload-file.php is
Firebug geeft echter wel aan dat deze header verstuurd is. Waarom kan ik deze vervolgens niet uitlezen in PHP?
Wat ik heb geprobeerd:
1. Content type toevoegen, via Google gevonden:
2. Slechts 1 header versturen (file.name), geen succes
3. Ipv $_REQUEST $_POST gebruikt (via google gevonden), geen succes
Kan iemand mij een duwtje de goede richting opgeven
?
Doel
Ik wil door middel van een XMLHttpRequest(); een file versturen. Ik gebruik FireFox 16.0.2. om te testen.
Relevante code
JavaScript:
1
2
3
4
5
6
7
8
9
| var xhr = new XMLHttpRequest(); // wat validaties // start upload xhr.open("POST", $id("upload").action, true); xhr.setRequestHeader("X_FILENAME", file.name); xhr.setRequestHeader("X_FILE_SIZE", file.size); xhr.setRequestHeader("X_FILE_TYPE", file.type); xhr.send(file); |
$id("upload") verwijst naar mijn upload file, namelijke upload-file.php. Dit werkt ook, want als ik via Firebug bekijk zie ik het volgende terug komen bij verzoekheaders:
Onder het tabblad POST komt het plaatje ook terug (slechts een stukje van de code)X_FILENAME scannen0001.jpg
X_FILE_SIZE 257596
X_FILE_TYPE image/jpeg
Ik ben dus tot de conclusie gekomen dat mijn javascript/form gedeelte klopt, puur kijkend naar wat Firebug mij terug geeft. Maar wellicht klopt mijn conclusie niet. Voor het debuggen heb ik mijn PHP terug gebracht naar de basis.ÿØÿáxExif��II*���������HP�����z�������†�������Ž���(������������������–���i‡����Æ�������������������HP pst_p02d�È������È�������������ÿ������€������ÿ������€������ÿ������ ������0220����D��‘������ ����0100 ������� ������ ����p�� €������� €�������€���X������2012:11:11 21:36:11��� 0A0 7A0 8A0HPSI0002�� 11A0 0A0 0A0 0�� 21A0 0A0 0A0 0�� 31A0 0A0 0A0 0�� 32A0 0A0 0A0 0�� 41A0 0A0 0A0 0�� 42A0 0A0 0A0 0�� 43A0 0A0 0A0 0�� 44A0 0A0 0A0 0�� 51A0 0A0 0A0 0�� 61A0 1A0 1A0 0�� 62A0 0A0 0A0 0�� 63A0 0A0 0A0 0�� 64A0 0A0 0A0 0�� 71A0 1A0 1A0 0�� 81A0 4A0 1A0 0�� 82A0 4A0 1A0 0�� 83A0 4A0 1A0 0�� 84A0 4A0 1A0 0��ÿÛ�C�ÿÄ¢���������� �������
De php code
PHP:
1
2
3
4
5
6
7
8
| $fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false); if ($fn) { die ('gelukt'); } else { die ('epic fail'); } |
Echter, mijn output van upload-file.php is
epic fail
Firebug geeft echter wel aan dat deze header verstuurd is. Waarom kan ik deze vervolgens niet uitlezen in PHP?
Wat ik heb geprobeerd:
1. Content type toevoegen, via Google gevonden:
code:
Geen succes1
2
| setRequestHeader('Content-Type',
'application/x-www-form-urlencoded'); |
2. Slechts 1 header versturen (file.name), geen succes
3. Ipv $_REQUEST $_POST gebruikt (via google gevonden), geen succes
Kan iemand mij een duwtje de goede richting opgeven