March 27, 2003
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Håller på med ett uploadscript till en webserver. Jag vet att det finns färdiga script (bla fått ett av Gamblor, stort tack!) men jag vill göra ett eget mest för att lära mig.
Så här ser formuläret (?) ut:
<form name="" action="upload2.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="26214400">
<input type="file" name="file1" size="35" />
<input type="file" name="file2" size="35" />
<input type="file" name="file3" size="35" />
<input type="file" name="file4" size="35" />
<input type="file" name="file5" size="35" />
<input type="submit" value="Skicka" />
</form>
Nått som är galet i det?
Nu till frågan:
Hur blir "grundkoden" för själva php-scriptet?
Alltså den fil där jag ställer in mapp osv...
Tittat lite på php.net och om man bara ska ladda upp en fil påstår dom att detta är en bra början:
<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . $_FILES['userfile']['name'];
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
print "File is valid, and was successfully uploaded. ";
print "Here's some more debugging info:n";
print_r($_FILES);
} else {
print "Possible file upload attack! Here's some debugging info:n";
print_r($_FILES);
}
print "</pre>";
?>
Men som sagt, hur blir det när jag har flera filer?
Stort tack!
EDIT: Stavfel. Tänk också på att jag inte kan ett skit php... 🙂
January 27, 2003
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Adam wrote: Skitsamma, jag får ta ett script för en fil i taget... 🙁
jag har ett färdigmodifierat(har inte skrivit scriptet själv) som du kan få, det är för 3 filer just nu men det går säkert lätt att fixa fler
testa det på http://www.ruff.se/upload.php
March 27, 2003
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Jag har kommit en bit på ett för en fil nu... Får köra med det så länge. Tack iaf!
EDIT: Förresten; vet du hur man får den att kolla om en fil med samma filnamn redan finns?
Att kolla sizen har jag hittat, ser ut såhär...
$file_size = $_FILES['userfile']['size'];
if($file_size > $max_file_size) {
die ("Filen är för stor. Max: ".$max_file_size." Kb");
På liknande vis borde man väl kunna kolla om filen redan finns?
June 30, 2001
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Du har postat två olika koder i ditt första inlägg. De kommer inte fungera med varandra eftersom formuläret:s inputfält har fel namn. För att få dem att fungera ihop måste du istället ha detta:
<input type="file" name="userfile" size="35" />
Då kommer din existenskod se ut så här:
if(file_exists($_FILES['userfile']))
{
die("Filen existerar redan...");
}
March 27, 2003
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Okej Okej.... Den här tråden blir väldigt konstig eftersom jag ändrat mig hela tiden...
Nu ser koden ut såhär:
<?php
error_reporting(E_ALL);
// Tillåtna ändelser.
$ext = array(".zip", ".jpg", ".jpeg", ".gif", ".rar", ".exe", ".bmp");
// Max storlek.
$max_file_size = "26214400";
// Mappen (behörighet).
$target_dir = "Upload/";
// Ersätt "space" med "_".
$_FILES['userfile']['name'] = str_replace(' ', '_', $_FILES['userfile']['name']);
//Om filformat ej godkänt.
$file_name = $_FILES['userfile']['name'];
$file_name = strrchr($file_name, ".");
if(!in_array($file_name,$ext))
{
$error = "Filformatet ej tillåtet. De filformat som stöds är:
";
foreach( $ext as $exts ){
$error .= "$exts ";
}
die ("$error");
}
//Filen är för stor.
$file_size = $_FILES['userfile']['size'];
if($file_size > $max_file_size) {
die ("Filen är för stor, max storleken är ".$max_file_size." Kb");
}
// Kolla att en fil är uppladdad och flytta den till målkatalogen.
if (isset($_POST['submit']) && is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], $target_dir.$_FILES['userfile']['name']);
Header ("Location: upload.php");
}
?>
Nu jobbar vi utifrån denna koden. Ursäkta röran!
EDIT: Stavfel...
March 27, 2003
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Nu har jag testat att lägga till
//Om fil redan finns.
if(!file_exists($_FILES['userfile']['name']))
{
$error = "Det finns redan en fil med namnet. Döp om filen och försök igen.";
die ("$error");
}
Då säger den att filen redan finns oavsett om den gör det eller inte. (Det går med andra ord inte att ladda upp nånting...)
Har även testat att göra som Mathias sa nämligen ta bort ['name']. Funkar inte.
Har även testat att skapa en variabel:
$file_name = $_FILES['userfile']['name']
Inget funkar... 🙁
Vad gör jag för fel..?
EDIT: Även testat utan ! framför file_exists, men då funkar det inte alls. Om filen redan finns ersätts den... :-/
2 Guest(s)
![sp_Information](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_Information.png)