Gå til innhold

hvordan laste opp bilder i forskjellige mapper?


Anbefalte innlegg

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

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

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

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