Hjälp mig med ett uploadscript.|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Hjälp mig med ett uploadscript.
Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
1
November 14, 2004 - 2:32 pm
sp_Permalink sp_Print

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... 🙂

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
772674
November 14, 2004 - 5:17 pm
sp_Permalink sp_Print

Skitsamma, jag får ta ett script för en fil i taget... 🙁

Etheral
Kommer du hit ofta?
Medlem
Forum Posts: 855
Member Since:
January 27, 2003
sp_UserOfflineSmall Offline
772715
November 14, 2004 - 6:44 pm
sp_Permalink sp_Print

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

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
772740
November 14, 2004 - 7:20 pm
sp_Permalink sp_Print

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?

Mathias_2
Member
Medlem
Forum Posts: 4544
Member Since:
June 30, 2001
sp_UserOfflineSmall Offline
772750
November 14, 2004 - 7:36 pm
sp_Permalink sp_Print

För att titta om en fil existerar:


if(file_exists(filnamn.filändelse))
{
die("Filen existerar redan...");
}
Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
772757
November 14, 2004 - 7:47 pm
sp_Permalink sp_Print

Hehe.... *Undrar om Mathias sett min EDIT i översta posten*

Tack, ska se vad jag kan göra...

Mathias_2
Member
Medlem
Forum Posts: 4544
Member Since:
June 30, 2001
sp_UserOfflineSmall Offline
772761
November 14, 2004 - 7:50 pm
sp_Permalink sp_Print

Adam wrote: Hehe.... *Undrar om Mathias sett min EDIT i översta posten*

Tack, ska se vad jag kan göra...

Vad? Ska jag förklara bättre? Tror inte att det går 😉

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
772786
November 14, 2004 - 8:21 pm
sp_Permalink sp_Print

Det du kallar "filnamn.filändelse" menar du:

$_FILES['userfile']['name']

???

Mathias_2
Member
Medlem
Forum Posts: 4544
Member Since:
June 30, 2001
sp_UserOfflineSmall Offline
772801
November 14, 2004 - 8:38 pm
sp_Permalink sp_Print

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...");
}
Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
772804
November 14, 2004 - 8:45 pm
sp_Permalink sp_Print

Okej Okej.... Den här tråden blir väldigt konstig eftersom jag ändrat mig hela tiden... laugh

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...

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
773249
November 15, 2004 - 1:36 pm
sp_Permalink sp_Print

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... :-/

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 59
Currently Browsing this Page:
2 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL