Themecreator Skrevet 26. september 2009 Del Skrevet 26. september 2009 Jeg tenkte å lage en fotoside, hvor man først må logge inn for å komme til opplastings siden, for så å kunne laste opp i forskjellige mapper. eks, natur, action, mennesker, landskap osv. Innloggingen har jeg ikke noen problemer med, og egentlig ikke å laste opp filer heller, men kommer ikke på hvordan man kan velge hvilken mappe man vil legge filene i. Noen som har noen ideer? uploader.php <?php include("password_protect.php"); ?> <?php $directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); $uploadHandler = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'multiple.upload.processor.php'; $max_file_size = 300000000; // size in bytes ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="global.css"> <title>Last opp bilder</title> </head> <body> <div class="container"> <div class="content_top"></div> <div class="content_body"> <div class="logo"><img src="images/mobile_icon.ico"/>mobil: 4110 4110<br/><img src="images/email_icon.ico"/> email:[email protected]</div> <form id="Upload" action="<?php echo $uploadHandler ?>" enctype="multipart/form-data" method="post"> <h1> Last opp bilder </h1> <p> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>"> </p> <p> <label for="file1">Fil som skal lastes opp:</label> <input id="file1" type="file" name="file[]"> </p> <p> <label for="file2">Fil som skal lastes opp:</label> <input id="file2" type="file" name="file[]"> </p> <p> <label for="file3">Fil som skal lastes opp:</label> <input id="file3" type="file" name="file[]"> </p> <p> <label for="submit">Trykk for å laste opp bildene:</label> <input id="submit" type="submit" name="submit" value="Last opp!"> </p> <br/> </form> </div> <div class="content_bottom"></div> </div> </body> </html> multiple.upload.processor.php <?php $directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); $uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploaded_files/'; $uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploader.php'; // make a note of the location of the success page $uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'multiple.upload.success.php'; // name of the fieldname used for the file in the HTML form $fieldname = 'file'; //echo'<pre>';print_r($_FILES);exit; // Now let's deal with the uploaded files // possible PHP upload errors $errors = array(1 => 'php.ini max file size exceeded', 2 => 'html form max file size exceeded', 3 => 'file upload was only partial', 4 => 'no file was attached'); // check the upload form was actually submitted else print form isset($_POST['submit']) or error('the upload form is neaded', $uploadForm); // check if any files were uploaded and if // so store the active $_FILES array keys $active_keys = array(); foreach($_FILES[$fieldname]['name'] as $key => $filename) { if(!empty($filename)) { $active_keys[] = $key; } } // check at least one file was uploaded count($active_keys) or error('No files were uploaded', $uploadForm); // check for standard uploading errors foreach($active_keys as $key) { ($_FILES[$fieldname]['error'][$key] == 0) or error($_FILES[$fieldname]['tmp_name'][$key].': '.$errors[$_FILES[$fieldname]['error'][$key]], $uploadForm); } // check that the file we are working on really was an HTTP upload foreach($active_keys as $key) { @is_uploaded_file($_FILES[$fieldname]['tmp_name'][$key]) or error($_FILES[$fieldname]['tmp_name'][$key].' not an HTTP upload', $uploadForm); } // validation... since this is an image upload script we // should run a check to make sure the upload is an image foreach($active_keys as $key) { @getimagesize($_FILES[$fieldname]['tmp_name'][$key]) or error($_FILES[$fieldname]['tmp_name'][$key].' not an image', $uploadForm); } // make a unique filename for the uploaded file and check it is // not taken... if it is keep trying until we find a vacant one foreach($active_keys as $key) { $now = time(); while(file_exists($uploadFilename[$key] = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'][$key])) { $now++; } } // now let's move the file to its final and allocate it with the new filename foreach($active_keys as $key) { @move_uploaded_file($_FILES[$fieldname]['tmp_name'][$key], $uploadFilename[$key]) or error('receiving directory insuffiecient permission', $uploadForm); } // If you got this far, everything has worked and the file has been successfully saved. // We are now going to redirect the client to the success page. header('Location: ' . $uploadSuccess); // make an error handler which will be used if the upload fails function error($error, $location, $seconds = 5) { header("Refresh: $seconds; URL=\"$location\""); echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n". '"http://www.w3.org/TR/html4/strict.dtd">'."\n\n". '<html lang="en">'."\n". ' <head>'."\n". ' <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n". ' <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n". ' <title>Upload error</title>'."\n\n". ' </head>'."\n\n". ' <body>'."\n\n". ' <div id="Upload">'."\n\n". ' <h1>Upload failure</h1>'."\n\n". ' <p>An error has occured: '."\n\n". ' <span class="red">' . $error . '...</span>'."\n\n". ' The upload form is reloading</p>'."\n\n". ' </div>'."\n\n". '</html>'; exit; } // end error handler ?> multiple.upload.success.php <?php // filename: upload.success.php ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="global.css"> <script language="JavaScript"> var time = null function move() { window.location = 'http://gravvold.xtreemhost.com' } </script> <title>Successful upload</title> </head> <body onload="timer=setTimeout('move()',4000)"> <div class="container"> <div class="content_top"></div> <div class="content_body"> <div class="logo"><img src="images/mobile_icon.ico"/>mobil: 4110 4110<br/><img src="images/email_icon.ico"/> email:[email protected]</div> <div id="Upload"> <h1>opplasting av bilder</h1> <p>Yay! bildene ble lastet opp uten problemer</p> </div> <br/> </div> <div class="content_bottom"></div> </div> </body> </html> PS. det er ikke jeg som har skrevet scripten... Lenke til kommentar
BlueEAGLE Skrevet 26. september 2009 Del Skrevet 26. september 2009 To muligheter her. Det ene er å bruke merkelapper (tags) som metainformasjon til bildet og bruke dette som grunnlag for album. Hvis det er viktig for deg at bildene ligger strukturert i mapper så har du en rullegardinmeny med tilgjengelige mapper i personens katalog. Spørsmålet blir da hvordan du vil gjøre det mulig for brukerene å opprette egne mapper. En valgfri tekstboks vil gjøre det mulig å skrive inn mappenavn og så kan du opprette mappen hvis den ikke eksisterer. Lenke til kommentar
Themecreator Skrevet 26. september 2009 Forfatter Del Skrevet 26. september 2009 hva jeg tenkte på, var å lage forskjellige uploader.php og multiple.upload.processor.php for hver og en mappe (det er tross alt bare snakk om 4-5 forskjellige kategorier her) men det blir kanskje bare tull? det er i hvertfall mer jobb en hva du kanskje tenker på? Lenke til kommentar
BlueEAGLE Skrevet 28. september 2009 Del Skrevet 28. september 2009 Du trenger bare en filbehandler for å håndtere opplastingen. Det du gjør er å sjekke om det er angitt kategori og legger filen i den kategorien. Hvis ingen kategori er angitt sjekker du om en tekstboks er fyllt ut som angir kategori. Da sjekker du om kategorien allerede eksisterer. Hvis den ikke gjør det så lager du en ny katalog til brukeren og dytter bildet inn der. Hvis ingen kategori er valgt og tekstboksen er tom så kan du velge om du vil gi brukeren en feilmelding eller dytte bildet i en standardkategori. I skriptet der brukeren angir hvilken fil som skal lastes opp og hvilken kategori den skal legges i så lager du en løkke som sjekker hvilke kataloger/kategorier som allerede eksisterer og presenterer dem i en rullegardinmeny slik at han kan velge hvilken kategori bildet skal inn i. Nyttige funksjoner i rekkefølge http://php.net/scandir <=Hente innholdet i en katalog http://php.net/foreach <=Gå igjennom en matrise http://php.net/is_dir <=Sjekke at det er en katalog og ikke en fil Husk å filtrere bort katalogene ".." og evt. "." Lenke til kommentar
Themecreator Skrevet 1. oktober 2009 Forfatter Del Skrevet 1. oktober 2009 okay Takk Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå