Gå til innhold

Upload script, velge hvor man vil laste opp osv.


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet

Det er fortsatt over en måned igjen til jul, så det er litt tidlig å håpe på at noen skal lage dette til deg. Men du kan prøve hotscripts.com - der finner du mange ferdige scripts.

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet (endret)

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
Skrevet (endret)
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
Skrevet (endret)

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
Skrevet (endret)

Fint mulig det...

 

Ta en titt på følgende funksjoner:

file_exists

is_dir

mkdir

 

Du må først sjekke om katalogen finnes (filen, file_exists).

Dersom den finnes, sjekk om det er en katalog (is_dir).

Nei på ett av disse spørsmålene, gjør at du må lage mappen med mkdir.

 

EDIT: La inn litt linjeskift

Endret av kakkle
Skrevet

Jeg er desverre ikke så veldig god på PHP som jeg skulle ønsket..

Gidder du forklare litt nermere hva du mener?

 

Hvor skal jeg legge disse scriptene, osv..

Skrevet (endret)

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
Skrevet

Kansje jeg klarer det, kansje ikke..

Tviler egentlig på at jeg får det til med di minimalistiske kunskapene jeg har om PHP, men skal prøve når jeg kommer hjem..

 

Skrivedag i Norsk nå..

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...