Hej hej folkens, dette er så min første guide, så håber jeg kan holde det overskueligt og i kan følge med =)
Vi skal kigge på et Upload script som vi bygger op fra bunden. Først går vi igennem hvordan man uploader en fil og bagefter hvordan man laver en liste over alle filer og kan hente dem ned igen.
Såååå Lets get in to it! :)
Fil 1: Upload.php I upload.php starter vi med at lave en html formular til at finde den fil vi vil upload.
// Her starter vi vores form
<form action="upload.php" method="post" enctype="multipart/form-data">
// Så laver vi en input type file hvor vi kan browwse vores harddisk efter filen vi vil upload.
Vælg den fil du vil uploade. <input name="minfil" type="file">
// Og her tilføjer vi så en knap til vores formular som skal udføre handlingen.
<input type="submit" value="Upload fil">
// Her lukker vi vores form
</form>
Nu går vi så videre til sql delen hvor vi tjekker om der er valgt en fil og uploader den.
// Her starter vi med vores php del.
<?php
// Her tjekker vi om der er valgt en fil i vores formular.
if ($_FILES['minfil'])
{
// Her vælger vi så hvilken mappe filen skal ende i, i dette tilfælde "uploaded_files"
$destination = "uploaded_files/" . $_FILES['minfil']['name'];
// Her forsøger vi så at flytte filen fra dens midlertidige opholdssted til den mappe vi har valgt.
if (move_uploaded_file($_FILES['minfil']['tmp_name'], $destination))
{
// Hvis det så lykkes at flytte filen udskriver vi det her.
echo "Filen" . $_FILES['minfil']['name'] . " er blevet uploadet";
}
else
{
// Hvis det mislykkes at flytte filen så skriver vi det her.
echo "Filen blev ikke uploaded, prøv igen senere.";
}
}
// Her slutter vi med vores php del.
?>
Lad os så lige se hvordan vores upload.php ser ud nu:
// PHP delen
<?php
// Her tjekker vi om der er valgt en fil i vores formular.
if ($_FILES['minfil'])
{
// Her vælger vi så hvilken mappe filen skal ende i, i dette tilfælde "uploaded_files"
$destination = "uploaded_files/" . $_FILES['minfil']['name'];
// Her forsøger vi så at flytte filen fra dens midlertidige opholdssted til den mappe vi har valgt.
if (move_uploaded_file($_FILES['minfil']['tmp_name'], $destination))
{
// Hvis det så lykkes at flytte filen udskriver vi det her.
echo "Filen" . $_FILES['minfil']['name'] . " er blevet uploadet";
}
else
{
// Hvis det mislykkes at flytte filen så skriver vi det her.
echo "Filen blev ikke uploaded, prøv igen senere.";
}
}
// Her slutter vi med vores php del.
?>
// HTML delen
// Her starter vi vores form
<form action="upload.php" method="post" enctype="multipart/form-data">
// Så laver vi en input type file hvor vi kan browwse vores harddisk efter filen vi vil upload.
Vælg den fil du vil uploade. <input name="minfil" type="file">
// Og her tilføjer vi så en knap til vores formular som skal udføre handlingen.
<input type="submit" value="Upload fil">
// Her lukker vi vores form
</form>
Fil 2: upload_show.php
// Vi starter php delen.
<?
// Her vælger vi vores mappe hvor vi har placeret de uploadede filer. Stadig "uploaded_files"
$dirname = "uploaded_files/";
// Her laver vi så en $var hvor vi åbner vores mappe.
$dirhandle = opendir($dirname);
// Her starter vi så vores mappe og looper igennem alle filerne/Mapperne i den.
while($file = readdir($dirhandle))
{
// Her fjerner vi så alle "." og ".."
if ($file != "." && $file != "..")
{
// Her tjekker vi så om det er en mappe eller en fil.
if (is_file($dirname.$file))
{
// Her udskriver vi navnet hvis det er en fil.
echo "fil: " . $file . "<br>";
}
else
{
// Og her udskriver vi navnet hvis det er en mappe.
echo "mappe: " . $file . "<br>";
}
}
}
?>
Dette er så som i kan se en simpel måde at udskrive filerne i en mappe på. Så lad os gå lidt videre med det og lave en tabel med et link til at hente filenerne, samtidig så gør vi så den ikke printer mapperne.
// Vi starter php delen.
<?
// Her vælger vi vores mappe hvor vi har placeret de uploadede filer. Stadig "uploaded_files"
$dirname = "uploaded_files/";
// Her laver vi så en $var hvor vi åbner vores mappe.
$dirhandle = opendir($dirname);
// Her lukker vi midlertidigt vores php for at starte vores table til vores liste.
?>
// Her starter vi så vores table.
<table width="250" border="1">
<tr>
<td width="200">Fil navn:</td><td width="50">Link</td>
</tr>
// Og så åbner vi for php igen
<?
// Her starter vi så vores mappe og looper igennem alle filerne i den.
while($file = readdir($dirhandle))
{
// Her fjerner vi så alle "." og ".."
if ($file != "." && $file != "..")
{
// Her tjekker vi så om det er en mappe eller en fil.
if (is_file($dirname.$file))
{
// Her udskriver vi så navnet og linket til filen med <tr> og <td>
echo "<tr><td> " . $file . "</td><td><a href=\"/uploaded_files/$file\"/>Hent</a></td></tr>";
}
}
}
?>
// Her lukker vi så vores table.
</table>
Lille forklaring. Vi starter vores table før loopet og så når vi udskriver et fil navn laver vi en række <tr> og de 2 felter <td> Hvor vi så udskriver vores information i så lukker vi vores felter og vores række og så når den looper igennem næste gang vil den lave en ny række. Sådan laver vi så en liste.
Så der måske nogen af jer der undre jer lidt over vores link så lad os lige kigge på det igen.
echo "<tr><td> " . $file . "</td><td><a href=\"/uploaded_files/$file\"/>Hent</a></td></tr>";
Vi bruger som i kan se html til at lave vores link men da vi i html er nød til at bruge " " " som vil forstyrre vores php command "echo" derfor så indhegner vi det "\"/" så er det bliver printet men det ikke forstyrre vores php.
Håber i fik noget ud af at kigge på min guide, som sagt er det min første og derfor er i også meget velkommen til at komme med ros eller kritik.
I kan se en live demo her:
http://www.shavi.dk/upload.php Hvor jeg bare har tilføjet nogle links og udarbejdet listen mere.