Att tänka på är egentligen bara två saker, flytta filen till rätt plats, se till att platsen tillåter det.
Nedan ett script som fungerar som jag använder, baserat på det från php-manualen.
Säg till om något inte fungerar.
<?php
if($_GET['action'] == "") {
?>
<form enctype="multipart/form-data" action="fileupload.php?action=upped" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>
<?php
}
if($_GET['action'] == "upped") {
// kolla så filen inte är för stor
$MAX_FILE_SIZE = "1000000";
if($_FILES['userfile']['size'] > $MAX_FILE_SIZE) {
echo "Bilden är för stor.";
exit;
}
// kolla så det är korrekt typ av fil överhuvudtaget
if(($_FILES['userfile']['type'] != "image/jpeg") AND
($_FILES['userfile']['type'] != "image/png") AND
($_FILES['userfile']['type'] != "image/gif")
) {
echo "
Tillåtna filer är <b>jpg, png och gif</b>.
";
exit;
}
// filen är godkänd i size, ladda upp
$upload_dir = 'imagefarm/';
$uploadfile = $upload_dir. $_FILES['userfile']['name'];
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
$result = check_upload($_FILES['userfile']['error']);
$filnamn = $_FILES['userfile']['name'];
$filtyp = $_FILES['userfile']['type'];
$filstorlek = $_FILES['userfile']['size'];
echo "$result.<p>
Namn: $filnamn<br>
Typ: $filtyp<br>
Storlek: $filstorlek bytes
<hr>
<a href=\"$uploadfile\">Filen är här</a> ($uploadfile)";
} else {
// något gick galet, skriv ut vad
echo "attack of teh sharkie";
$result = check_upload($_FILES['userfile']['error']);
echo "<br>$result<hr>";
}
}
// kolla resultatet av en filuppladdning och returnera detsamma
function check_upload($string) {
$error_explained = array(
"0" => "Upload went without error",
"1" => "Too large for webserver",
"2" => "Exceeded maximum filesize",
"3" => "File was not fully uploaded",
"4" => "No file was uploaded"
);
$result = $error_explained[$string];
return($result);
}
?>