Gå til innhold

Upload script, velge hvor man vil laste opp osv.


Anbefalte innlegg

Jeg har ett bildegalleri på en klanside som jeg vil at medlemmer kan laste opp siden egne bilder til.

 

For og gjøre det vil jeg ha ett upload script på admin siden.

 

Dette scriptet skal være slik at når man trykker på en dropdown meny står det nicket

til den og den klanmedlemen og når man trykker på den skal man kunne laste opp til

den mappen som heter det samme.

 

Vist det ikke er noe mappe så hadde det vert greit om scriptet laget en..

 

Er det noen som vet om noe slikt eller kan lage noe slik? :w00t:

Endret av goggen90
Lenke til kommentar
Videoannonse
Annonse

Kan vel ikke være vanskeligere en og bruke samme upload scriptet flere ganger. Bare endre litt i det slik at det er til di forskjellige pers.

Fant dette i et forum og synes det funker kjempe bra:

<?php
/* Mappa som filene blir lastet opp i */
$mappe = "images/";

/* Filer som er lov å laste opp */
$allowed_ext = "jpg, gif,jpeg, png";

/* Maks størelse på bilde som er lov */
$max_size = "25000"; // 25000 er det samme som 25kb

/* Maks høyde på bilde som er lov */
$max_height = "1000"; // Måles i pixler (px)

/* Maks bredde på bilde som er lov */
$max_width = "1000"; // Måles i pixler (px)

// Sjekker at alt følger dine krav
$extension = pathinfo($_FILES['file']['name']);
$extension = $extension[extension];
$allowed_paths = explode(", ", $allowed_ext);
for($i = 0; $i < count($allowed_paths); $i++) {
if ($allowed_paths[$i] == "$extension") {
$ok = "1";
}
}
if ($ok == "1") {
if($_FILES['file']['size'] > $max_size)
{
print "Fila tar for stor plass! " . $max_size . " er quoten på hvor stor fila kan være!";
exit;
}
if ($max_width && $max_height) {
list($width, $height, $type, $w) = getimagesize($_FILES['file']['tmp_name']);
if($width > $max_width || $height > $max_height)
{
print "Filen er for bred eller/og høy!<br>Max bredde er " . $max_width . "px<br>Max høyde er " . $max_height . "px.";
exit;
}
}

// Alt er OK, derfor laster vi opp filen
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
move_uploaded_file($_FILES['file']['tmp_name'],$mappe.'/'.$_FILES['file']['name']);
}
print "Informasjonen ble lastet opp, og er nå under godkjenning.";
} else {
print "Den filen du prøvde å laste opp har en filtype som ikke er lov å laste opp!";
}
?>

Endret av stianiquniez
Lenke til kommentar

Tusen takk for det...

For og lage en form hvor man kan velge hvor man vil laste opp må man lage deg til

$mappe ja, men vil da mappen bli opprettet vist den ikke finnes? Er det mulig og legge det inn i koden, at vist mappa ikke finnes, lag en (da kommer vell også chmod inn i bildet)

 

Jeg skal teste scriptet når jeg kommer hjemm.. sitter på skolen :sick: (Skolelinux)

 

Hvordan skal jeg sette opp selve formen?

har nå index.php:

<form method='POST' action="upload.php">
Album: <input type="text" name="mappe" size="20"><br />
Fil: <input type="file" name="file" size="20"><br /><input type="submit" value="Last opp!" name="submit">
</form>

 

og upload.php

<?php
// Upload script starter:

/* Mappa som filene blir lastet opp i */
/* $mappe = "images/"; */
$mappe = $_GET['mappe'];

/* Filer som er lov å laste opp */
$allowed_ext = "jpg, gif,jpeg, png";

/* Maks størelse på bilde som er lov */
$max_size = "9999999999"; // 25000 er det samme som 25kb / 0.25mb

/* Maks høyde på bilde som er lov */
$max_height = "50000"; // Måles i pixler (px)

/* Maks bredde på bilde som er lov */
$max_width = "50000"; // Måles i pixler (px)

// Sjekker at alt følger dine krav
$extension = pathinfo($_FILES['file']['name']);
$extension = $extension[extension];
$allowed_paths = explode(", ", $allowed_ext);
for($i = 0; $i < count($allowed_paths); $i++) {
if ($allowed_paths[$i] == "$extension") {
$ok = "1";
}
}
if ($ok == "1") {
if($_FILES['file']['size'] > $max_size)
{
print "Fila tar for stor plass! " . $max_size . " er quoten på hvor stor fila kan være!";
exit;
}
if ($max_width && $max_height) {
list($width, $height, $type, $w) = getimagesize($_FILES['file']['tmp_name']);
if($width > $max_width || $height > $max_height)
{
print "Filen er for bred eller/og høy!<br>Max bredde er " . $max_width . "px<br>Max høyde er " . $max_height . "px.";
exit;
}
}

// Alt er OK, derfor laster vi opp filen
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
move_uploaded_file($_FILES['file']['tmp_name'],$mappe.'/'.$_FILES['file']['name']);
}
print "Informasjonen ble lastet opp, og er nå under godkjenning.";
} else {
print "Den filen du prøvde å laste opp har en filtype som ikke er lov å laste opp!";
}
?>

 

http://goggen.simplemachines.no/eltax/test/

 

Edit: La til scriptene osv..

Endret av goggen90
Lenke til kommentar

Du må ha med en ekstra attributt encoding type (enctype) i form taggen for å kunne laste opp filer:

<form enctype="multipart/form-data" action="upload.php" method="POST">

 

En annen ting er et manglende mellom i $allowed_ext, som vil gi deg problemer med å laste opp gif og jpeg filer, men det ser du sikkert selv

Endret av kakkle
Lenke til kommentar
Du må ha med en ekstra attributt encoding type (enctype) i form taggen for å kunne laste opp filer:

<form enctype="multipart/form-data" action="upload.php" method="POST">

 

En annen ting er et manglende mellom i $allowed_ext, som vil gi deg problemer med å laste opp gif og jpeg filer, men det ser du sikkert selv

5202827[/snapback]

 

Jeg gjorde det du sa..

Warning: move_uploaded_file(/mullah.jpg): failed to open stream: Permission denied in /hsphere/local/home/simplema/goggen.simplemachines.no/eltax/test/upload.php on line 47

 

Warning: move_uploaded_file(): Unable to move '/tmp/phpyjnouw' to '/mullah.jpg' in /hsphere/local/home/simplema/goggen.simplemachines.no/eltax/test/upload.php on line 47

Informasjonen ble lastet opp, og er nå under godkjenning.

http://goggen.simplemachines.no/eltax/test/

Endret av goggen90
Lenke til kommentar

du bruker $_GET['mappe'] for å få verdien til mappe. Siden du sender formdataen med post metoden, må du bruke $_POST['mappe']. ($_GET bruker for å hente verdier fra url)

Du må også sørge for mappen eksisterer, og at du har skriverettigheter til den. (chmod 0777).

 

En annen ting du bør gjøre, for at det hele skal bli litt mer brukervennlig, er å la filendelsen være uavhengig av store / små bokstaver. Slik det er nå, så får du ikke lastet opp bilder med endelsene JPG, GIF, PNG.

Endret av kakkle
Lenke til kommentar

Gir deg ikke koden direkte, men skriver litt pseudokode på hvordan det skal bli... Du trenger egentlig bare legge inn if / else.

 

Pseudokode:

$mappe = $_POST["mappe"];
Eksister $mappe (Bruk file_exists($mappe))?
JA: ($mappe eksisterer)
   Er $mappe en mappe (dir) ? (Bruk is_dir($mappe)) 
   JA: ($mappe er en mappe)
       mappen finnes. Alt ok
   NEI: ($mappe er ikke en mappe)
       $mappe er en fil, opprett $mappe med mkdir($mappe)
NEI: ($mappe eksister ikke)
   $mappe finnes ikke, opprett mappen med mkdir($mappe)

 

Klarer du å gjøre dette om til if / else setninger, så er du på god vei ;)

 

Det forutstter at du har skrivetilgang til den mappen hvor du skal opprette mappen. Det vil si at den mappen som upload.php ligger i må ha skrivetilgang for alle (0777) , eller for den brukeren som kjører php scriptet

 

EDIT: Dette kan legges inn etter at du har sjekket at filen er gyldig (med tanke på filendelse, størrelse osv. Slik at du ikke oppretter en mappe unødvendig. Den første linjen ($mappe = $_POST['mappe']) legger du inn istedetfor $mappe = $_GET['mappe']

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...