Undefined Index: file
Bedank beide voor de input. Ik gebruik inderdaad een (soort) Framework. Het is eigenlijk meer een combinatie van verschillende frameworks.
@Ozzie Ik heb gedaan wat je aanrade, de var_dump in de index geplaatst, juist boven de bootstrap en hij geeft de array leeg aan. Wat zijn mijn opties?
Alvast bedankt
Gewijzigd op 15/06/2015 08:06:40 door Donald Boers
Krijg je wel resultaat voor $_FILES --> het ligt aan je framework en je moet $_FILES anders benaderen
Krijg je geen resultaat voor $_FILES --> ergens in je PHP/webserver instellingen zorgt iets ervoor dat file uploads geblokkeerd worden of mislukken (en mogelijk loop je hierna alsnog tegen je framework aan)
Op deze manier kun je een aantal zaken uitsluiten en heb je na afloop een goede indicatie waar je het probleem kunt zoeken (en hopelijk oplossen).
Gewijzigd op 15/06/2015 13:46:29 door Thomas van den Heuvel
Hoi Thomas. Bedankt voor je reactie. Weet echt niet zo goed wat ik moet doen? Ik heb meer websites met de zelde opzet. Het enige verschil is dat ik in deze website (omdat het tweetalig is) Alto Router gebruik
Although very rare, but from the PHP Manual page comment :
If the $_FILES array suddenly goes mysteriously empty, even though your form seems correct, you should check the disk space available for your temporary folder partition. In my installation, all file uploads failed without warning. After much gnashing of teeth, I tried freeing up additional space, after which file uploads suddenly worked again.
And here's the check-list for file uploading in PHP:
Check php.ini for file_uploads = On, post_max_size, and upload_max_filesize. Make sure you’re editing the correct php.ini – use phpinfo() to verify your settings. Make sure you don’t misspell the directives as 8MB instead of the expected 8M!
Do not use javascript to disable your form file input field on form submission!
Make sure you do not have two input file fields with tha same name attirbute
Make sure your directory has read+write permissions set for the tmp and upload directories.
Make sure your file destination and tmp/upload directories do not have spaces in them.
Make sure all FORMs on your page have /FORM close tags.
Make sure your FORM tag has the enctype="multipart/form-data" attribute. No other tag will work, it has to be your FORM tag. Double check that it is spelled correctly. Double check that multipart/form-data is surrounded by STRAIGHT QUOTES, not smart quotes pasted in from Word OR from a website blog (WordPress converts straight quotes to angle quotes!). If you have multiple forms on the page, make sure they both have this attribute. Type them in manually, or try straight single quotes typed in manually.
Make sure your FORM tag has method="POST". GET requests do not support multipart/form-data uploads.
Make sure your file input tag has a NAME attribute. An ID attribute is NOT sufficient! ID attributes are for use in the DOM, not for POST payloads.
Also make sure that the file you are uploading does not have any non-alpha numeric characters in it.
Once, I just spent hours trying to figure out why this was happening to me all of a sudden. It turned out that I had modified some of the PHP settings in .htaccess, and one of them (not sure which yet) was causing the upload to fail and $_FILES to be empty.
do not leave an "_" (underscore) into the name attribute of the input tag
Finally, try uploading very small files.
Toevoeging op 15/06/2015 20:13:07:
bron: http://stackoverflow.com/questions/3586919/why-would-files-be-empty-when-uploading-files-to-php
Donald Boers op 15/06/2015 18:24:54:
Hoi Thomas. Bedankt voor je reactie. Weet echt niet zo goed wat ik moet doen? Ik heb meer websites met de zelde opzet. Het enige verschil is dat ik in deze website (omdat het tweetalig is) Alto Router gebruik
Uhm, je gebruikt een MVC-framework, maar weet niet hoe file uploads werken? Curieus.
Probeer het zo eens, sla het volgende script op als test.php of whatever en probeer iets te uploaden:
Code (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
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
<?php
header('Content-Type: text/html; charset=UTF-8');
function escape($in) {
return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
?><h2>$_POST</h2>
<pre><?php echo print_r(array_map('escape', $_POST), true) ?></pre>
<h2>$_FILES</h2>
<pre><?php echo print_r($_FILES, true) ?></pre><?php
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>yolo swag file upload</title>
<style type="text/css">
label { width: 150px; display: block; float: left; }
</style>
</head>
<body>
<form action="<?php echo escape($_SERVER['PHP_SELF']) ?>" method="post" accept-charset="UTF-8" enctype="multipart/form-data">
<p><label for="name">type iets</label><input type="text" name="name" id="name" /></p>
<p><label for="file">selecteer iets</label><input type="file" name="file" id="file" /></p>
<p><button type="submit">verzenden</button>
</form>
</body>
</html>
header('Content-Type: text/html; charset=UTF-8');
function escape($in) {
return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
?><h2>$_POST</h2>
<pre><?php echo print_r(array_map('escape', $_POST), true) ?></pre>
<h2>$_FILES</h2>
<pre><?php echo print_r($_FILES, true) ?></pre><?php
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>yolo swag file upload</title>
<style type="text/css">
label { width: 150px; display: block; float: left; }
</style>
</head>
<body>
<form action="<?php echo escape($_SERVER['PHP_SELF']) ?>" method="post" accept-charset="UTF-8" enctype="multipart/form-data">
<p><label for="name">type iets</label><input type="text" name="name" id="name" /></p>
<p><label for="file">selecteer iets</label><input type="file" name="file" id="file" /></p>
<p><button type="submit">verzenden</button>
</form>
</body>
</html>