Upload script doet het niet
Waarom werkt mijn upload script niet, ik zit er al de hele avond mee te stoeien :s
HTML-form:
Code (php)
1
2
3
4
2
3
4
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="upload">
</form>
<input type="file" name="file">
<input type="submit" value="upload">
</form>
upload.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$fav='fav';
if($_FILES['file'])
{
$ext=end(explode('.', $_FILES['file']['tmp_name']));
if (($_FILES['file']['type'] == 'image/ico') && ($_FILES['file']['size'] < 5000) && ($ext == 'ico'))
{
move_uploaded_file($_FILES['file']['tmp_name'],'favicon/'.$fav.'.ico');
}
}
?>
$fav='fav';
if($_FILES['file'])
{
$ext=end(explode('.', $_FILES['file']['tmp_name']));
if (($_FILES['file']['type'] == 'image/ico') && ($_FILES['file']['size'] < 5000) && ($ext == 'ico'))
{
move_uploaded_file($_FILES['file']['tmp_name'],'favicon/'.$fav.'.ico');
}
}
?>
bij voorbaat dank
Gewijzigd op 08/02/2012 23:42:34 door Nicky van boven
Foutmelding? Wat is 'werkt niet'? Waar denk je dat het probleem is? Wat heb je zoals gedaan tijdens het stoeien? Wat probeer je te bereiken? Wat is het verwachte resultaat en wat is het resultaat dat je krijgt?
een favicon uploaden naar de map "favicon" met als naam "fav.ico"
wanneer deze al bestaat, overschrijven.
Het is heel simpel eigenlijk.
Verder heb ik geen foutmeldingen, hij doet het gewoon niet.
Wat ik zoal heb gedaan is een else erin voeren, en proberen foutmeldingen uit te lokken zonder resultaat.
Wat ik wel weet, is dat ik geen $_FILES['file'] kan pakken.
dus de server denkt dat $_FILES['file'] niet bestaat.
En wat doet hij niet, misschien kijk je in verkeerde upload map. Wat gebeurt er als je de $_FILES print?
Verander if($_FILES['file']) eens naar if(isset($_FILES['file']))
Gewijzigd op 08/02/2012 23:49:39 door Joakim Broden
ik heb nu het script aangepast:
Code (php)
1
2
2
<?php
if(move_uploaded_file($_FILES['ufile']['tmp_name'],'favicon/skill.ico')){echo 'gelukt';}else{echo $_FILES['ufile']['tmp_name'].$_FILES['ufile'].'mislukt';}?>
if(move_uploaded_file($_FILES['ufile']['tmp_name'],'favicon/skill.ico')){echo 'gelukt';}else{echo $_FILES['ufile']['tmp_name'].$_FILES['ufile'].'mislukt';}?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="ufile">
<input type="submit" value="upload">
</form>
Toevoeging op 08/02/2012 23:48:50:
ps: hoe zet je foutmeldingen aan?
error_reporting(E_ALL);
Zelf even zoeken mag ook wel, we zijn hier om te helpen maar dat betekend niet dat je zelf geen inzet hoeft te tonen ;)
Hertog Jan:
Verander if($_FILES['file']) eens naar if(isset($_FILES['file']))
Echo die $...[temp_name] eens.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$path1="favicons/".$HTTP_POST_FILES['ufile']['name'][0];
copy($HTTP_POST_FILES['ufile']['tmp_name'][0], $path1);
echo $HTTP_POST_FILES['ufile']['name'][0];
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
$path1="favicons/".$HTTP_POST_FILES['ufile']['name'][0];
copy($HTTP_POST_FILES['ufile']['tmp_name'][0], $path1);
echo $HTTP_POST_FILES['ufile']['name'][0];
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="ufile">
<input type="submit" value="upload">
</form>
resultaat:
Warning: copy() [function.copy]: The first argument to copy() function cannot be a directory in /home/todolist/public_html/promopages/upload.php on line 6
resultaat van de echo: f
:s
letterlijk b, terwijl de naam van de favicon favicon.ico is
Toevoeging op 09/02/2012 00:05:03:
Wacht even, deze versie doet het:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$path1="favicons/".$HTTP_POST_FILES['ufile']['name'];
copy($HTTP_POST_FILES['ufile']['tmp_name'], $path1);
echo $HTTP_POST_FILES['ufile']['name'];
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
$path1="favicons/".$HTTP_POST_FILES['ufile']['name'];
copy($HTTP_POST_FILES['ufile']['tmp_name'], $path1);
echo $HTTP_POST_FILES['ufile']['name'];
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="ufile">
<input type="submit" value="upload">
</form>
Gewijzigd op 09/02/2012 00:03:40 door nicky van boven
Waarom ga je opeens over naar de vooroorlogse schrijfwijze $HTTP_POST_FILES in plaats van de hedendaagse $_FILES?
En nu weer terug naar je begin code, krijg je daar nu foutmeldingen te zien? En verander zowiezo if($_FILES['file']) naar if(isset($_FILES['file']))
het is eindelijk gelukt.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
if(isset($_FILES['favicon']))
{
$ext=end(explode('.', $_FILES['favicon']['name']));
if (($_FILES['favicon']['type'] == 'image/x-icon') && ($_FILES['favicon']['size'] < 5000) && ($ext == 'ico'))
{
move_uploaded_file($_FILES['favicon']['tmp_name'],'favicons/'.$rij['id'].'.ico');
}else{echo '<br>Only .ico files are allowed.';}
}
?>
if(isset($_FILES['favicon']))
{
$ext=end(explode('.', $_FILES['favicon']['name']));
if (($_FILES['favicon']['type'] == 'image/x-icon') && ($_FILES['favicon']['size'] < 5000) && ($ext == 'ico'))
{
move_uploaded_file($_FILES['favicon']['tmp_name'],'favicons/'.$rij['id'].'.ico');
}else{echo '<br>Only .ico files are allowed.';}
}
?>
Het lag volgens mij ook aan mijn server, die doet gek de laatste tijd.
Je hebt if($_FILES['file']) { veranderd naar if(isset($_FILES['file'])) {
Uitleg:
Met if () { verwacht PHP een boolean, $_FILES['file'] is een array. Oftewel hij voerde het script niet uit omdat if($_FILES['file']) { geen true is.
isset($_FILES['file']) geef een boolean terug, een true of false. Dus als $_FILES['file'] is geset geeft hij true terug en voert dus de code uit.
Kan iemand mij even zeggen of ik het zo goed uitleg?
@Hertog Jan: Volgens mij werkte het niet omdat er werd geprobeerd het 'type' uit de temp_name te halen.