aanpassing uploadscript
graag zou ik mijn huidige uploadscript aanpassen met twee functies:
* ik wil dat de geuploade fotos via ftp downloadbaar zijn (dat is nu niet het geval)
* en ik wil graag dat hij naast het uploaden ook thumbnails aanmaakt, met formaat 220 x 150 pix, en deze wegzet in een apart mapje, bijvoorbeeld database/thumbnails/
Dit is zijn mijn scripts...hopelijk kan iemand me helpen :P Alvast heel erg bedankt!
--------upload.php-------------
<form enctype="multipart/form-data" method="post" action="">
<p>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?
$lettercode_url = $_GET['lettercode'];
//Haal soort op
$var = mysql_query("SELECT * FROM soortentabel WHERE lettercode LIKE '$lettercode_url' ORDER BY nummer DESC LIMIT 1") or die (mysql_error());
$soortinfo = mysql_fetch_object($var);
//Bepaal wat de laatste foto is, bij 8 fotos kan je geen nieuwe fotos meer toevoegen.
$var = mysql_query("SELECT * FROM photos WHERE lettercode LIKE '$lettercode_url' ORDER BY photonr DESC LIMIT 1") or die (mysql_error());
$current = mysql_fetch_object($var);
$max = $current->photonr;
$plus1 = 1;
$new = $plus1 + $max;
if ($new == 9)
{
echo "Je kan geen extra fotos meer toevoegen";
}
else
{
echo "<i>Let op: de foto moet een .jpg bestandsformaat zijn, afmetingen hebben van 600 x 400 pix en een maximale grootte hebben van 100 KB.</i>";
echo "<input type='hidden' name='MAX_FILE_SIZE' value='10000000' />";
echo "<br><br>Selecteer een bestand: <br><input name='userfile' type='file'>";
echo "<input name='newname' value='". $soortinfo->nummer ."_". $soortinfo->genus ."_". $soortinfo->soort ."_". $new .".jpg' type='hidden'><br />";
echo "Beschrijving foto: <br>";
echo "<input name='photodescr' type='text' size='30'><br>";
echo "Klasse: museum, adult, pop, larve, vraatspoor of ei: <br>";
echo " <select name='photoclass'>
<option selected>museum</option>
<option>adult</option>
<option>pop</option>
<option>larve</option>
<option>vraatspoor</option>
<option>ei</option>
</select><br>";
echo "<input name='newphotonr' type='hidden' value='". $new ."' size='1'>";
echo "<input name='nummer' type='hidden' value='". $soortinfo->nummer ."' size='4'>";
echo "<input name='nummeradd' type='hidden' value='". $soortinfo->nummeradd ."' size='1'>";
echo "<input name='familie' type='hidden' value='". $soortinfo->familie ."' size='25'>";
echo "<input name='subfamilie' type='hidden' value='". $soortinfo->subfamilie ."' size='25'><br>";
echo "<input name='lettercode' type='hidden' value='". $soortinfo->lettercode ."' size='8'>";
echo "<input name='genus' type='hidden' value='". $soortinfo->genus ."' size='30'>";
echo "<input name='soort' type='hidden' value='". $soortinfo->soort ."' size='30'>";
echo "<input type='submit' value='upload bestand' />";
}
?>
$lettercode_url = $_GET['lettercode'];
//Haal soort op
$var = mysql_query("SELECT * FROM soortentabel WHERE lettercode LIKE '$lettercode_url' ORDER BY nummer DESC LIMIT 1") or die (mysql_error());
$soortinfo = mysql_fetch_object($var);
//Bepaal wat de laatste foto is, bij 8 fotos kan je geen nieuwe fotos meer toevoegen.
$var = mysql_query("SELECT * FROM photos WHERE lettercode LIKE '$lettercode_url' ORDER BY photonr DESC LIMIT 1") or die (mysql_error());
$current = mysql_fetch_object($var);
$max = $current->photonr;
$plus1 = 1;
$new = $plus1 + $max;
if ($new == 9)
{
echo "Je kan geen extra fotos meer toevoegen";
}
else
{
echo "<i>Let op: de foto moet een .jpg bestandsformaat zijn, afmetingen hebben van 600 x 400 pix en een maximale grootte hebben van 100 KB.</i>";
echo "<input type='hidden' name='MAX_FILE_SIZE' value='10000000' />";
echo "<br><br>Selecteer een bestand: <br><input name='userfile' type='file'>";
echo "<input name='newname' value='". $soortinfo->nummer ."_". $soortinfo->genus ."_". $soortinfo->soort ."_". $new .".jpg' type='hidden'><br />";
echo "Beschrijving foto: <br>";
echo "<input name='photodescr' type='text' size='30'><br>";
echo "Klasse: museum, adult, pop, larve, vraatspoor of ei: <br>";
echo " <select name='photoclass'>
<option selected>museum</option>
<option>adult</option>
<option>pop</option>
<option>larve</option>
<option>vraatspoor</option>
<option>ei</option>
</select><br>";
echo "<input name='newphotonr' type='hidden' value='". $new ."' size='1'>";
echo "<input name='nummer' type='hidden' value='". $soortinfo->nummer ."' size='4'>";
echo "<input name='nummeradd' type='hidden' value='". $soortinfo->nummeradd ."' size='1'>";
echo "<input name='familie' type='hidden' value='". $soortinfo->familie ."' size='25'>";
echo "<input name='subfamilie' type='hidden' value='". $soortinfo->subfamilie ."' size='25'><br>";
echo "<input name='lettercode' type='hidden' value='". $soortinfo->lettercode ."' size='8'>";
echo "<input name='genus' type='hidden' value='". $soortinfo->genus ."' size='30'>";
echo "<input name='soort' type='hidden' value='". $soortinfo->soort ."' size='30'>";
echo "<input type='submit' value='upload bestand' />";
}
?>
--------species_photo_nieuw_submit.php-------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?
global $_FILES;
$filename = $_FILES['userfile']['name'];
$allow[0] = "jpg";
// $allow[3] = "exe"; enz.
if ($_POST["newname"])
$uploadname = $_POST['newname'];
else
$uploadname = $_FILES['userfile']['name'];
$extentie = substr($uploadname, -3);
for ($i = 0; $i < count($allow); $i++)
{
if ($extentie == $allow[$i])
{
$extentie_check = "ok";
$i = count($allow) + 5; // om loop te beindigen
}
}
if ($extentie_check)
{
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], "database/" . $uploadname);
echo "Het bestand is geupload onder de naam: $uploadname.<br>";
echo "<class='text'>Je kan de beschrijving bewerken, klik <a href='species_photo_edit.php?lettercode=". $lettercode_url . "&p=1'><u>hier</u></a>.<br><p>";
}
}
else
{
echo "Erg ging iets mis, mogelijk is je bestand te groot, of is het een verkeerd bestandstype (alleen .jpg is toegestaan). <p>";
echo "<class='text'>Probeer het <a href='species_photo_edit.php?lettercode=". $lettercode_url . "&p=1'><u>opnieuw</u></a>.<br><p>";
echo "NB: Het kan zijn dat je je browser even moet refreshen voordat de vervangende foto zichtbaar is.";
}
?>
global $_FILES;
$filename = $_FILES['userfile']['name'];
$allow[0] = "jpg";
// $allow[3] = "exe"; enz.
if ($_POST["newname"])
$uploadname = $_POST['newname'];
else
$uploadname = $_FILES['userfile']['name'];
$extentie = substr($uploadname, -3);
for ($i = 0; $i < count($allow); $i++)
{
if ($extentie == $allow[$i])
{
$extentie_check = "ok";
$i = count($allow) + 5; // om loop te beindigen
}
}
if ($extentie_check)
{
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], "database/" . $uploadname);
echo "Het bestand is geupload onder de naam: $uploadname.<br>";
echo "<class='text'>Je kan de beschrijving bewerken, klik <a href='species_photo_edit.php?lettercode=". $lettercode_url . "&p=1'><u>hier</u></a>.<br><p>";
}
}
else
{
echo "Erg ging iets mis, mogelijk is je bestand te groot, of is het een verkeerd bestandstype (alleen .jpg is toegestaan). <p>";
echo "<class='text'>Probeer het <a href='species_photo_edit.php?lettercode=". $lettercode_url . "&p=1'><u>opnieuw</u></a>.<br><p>";
echo "NB: Het kan zijn dat je je browser even moet refreshen voordat de vervangende foto zichtbaar is.";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door SCO
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
$image = $_GET['image'] ;
$newwidth = $_GET['newwidth'];
$newheight = $_GET['newheight'];
$height = $_GET['height'];
$width = $_GET['width'];
$correctheight = round($width/2*3);
$correctwidth = round($height/3*2);
$correctheightb = round($width/3*2);
$correctwidthb = round($height/2*3);
$ratio = ($height/$width);
$src = imagecreatefromjpeg("$image");
$im = imagecreatetruecolor($newwidth,$newheight);
if ($croptofit)
{
if ($height > $width)
{
if ($ratio > 1.5)
{
$newy = round(($height-$correctheight)/2);
imagecopyresampled($im,$src,0,0,0,$newy,$newwidth,$newheight,$width,$correctheight);
}
else
{
$newx = round(($width-$correctwidth)/2);
imagecopyresampled($im,$src,0,0,$newx,0,$newwidth,$newheight,$correctwidth,$height);
}
}
else
if ($ratio < 0.67)
{
$newx = round(($width-$correctwidthb)/2);
imagecopyresampled($im,$src,0,0,$newx,0,$newwidth,$newheight,$correctwidthb,$height);
}
else
{
$newy = round(($height-$correctheightb)/2);
imagecopyresampled($im,$src,0,0,0,$newy,$newwidth,$newheight,$width,$correctheightb);
}
}
else
{
imagecopyresampled($im,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
}
imagejpeg($im, '',85);
imagedestroy($im);
?>
$image = $_GET['image'] ;
$newwidth = $_GET['newwidth'];
$newheight = $_GET['newheight'];
$height = $_GET['height'];
$width = $_GET['width'];
$correctheight = round($width/2*3);
$correctwidth = round($height/3*2);
$correctheightb = round($width/3*2);
$correctwidthb = round($height/2*3);
$ratio = ($height/$width);
$src = imagecreatefromjpeg("$image");
$im = imagecreatetruecolor($newwidth,$newheight);
if ($croptofit)
{
if ($height > $width)
{
if ($ratio > 1.5)
{
$newy = round(($height-$correctheight)/2);
imagecopyresampled($im,$src,0,0,0,$newy,$newwidth,$newheight,$width,$correctheight);
}
else
{
$newx = round(($width-$correctwidth)/2);
imagecopyresampled($im,$src,0,0,$newx,0,$newwidth,$newheight,$correctwidth,$height);
}
}
else
if ($ratio < 0.67)
{
$newx = round(($width-$correctwidthb)/2);
imagecopyresampled($im,$src,0,0,$newx,0,$newwidth,$newheight,$correctwidthb,$height);
}
else
{
$newy = round(($height-$correctheightb)/2);
imagecopyresampled($im,$src,0,0,0,$newy,$newwidth,$newheight,$width,$correctheightb);
}
}
else
{
imagecopyresampled($im,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
}
imagejpeg($im, '',85);
imagedestroy($im);
?>
Waar plaats ik dit script ongeveer en waar kan ik aangeven waar de thumbnails opgeslagen moeten worden?
Hoi Arjan,
Wat bedoel je er precies mee? Helaas ben ik niet zon expert dat ik weet wat ik er mee moet. Ik kan nog net wat met hp en mysql stoeien, maar een upload script is me nog net iets te moeilijk. Kan je misschien het script helemaal geven en laten weten wat er waar ongeveer gebeurt?
dank je wel alvast!
Je wilt dat ik het even voor je maak? Of zoek je zelf even uit wat de juiste parameters zijn voor de imagejpeg functie?
Ik heb er weer even aan zitten knutselen. Inmiddels heb ik de parameters bepaald en gebruikt gemaakt van de functie function photoCreateCropThumb.
De parameters kloppen wel, maar het script werkt niet: ik tref geen thumnails aan in het mapje database/thumbnails. Ik heb de map Chmod 777 meegegeven.
Als ik
echo var_dump($pic);
echo "".$pic. "";
doe staat er NULL.
Als ik de parameters echo, dan kloppen die wel.
Ergens las ik dat je voor de imagecreatefromjpeg GD2 geinstalleerd moet hebben. Nou heb ik een webhoster, en via phpinfo krijg ik dit:
gd
GD Support enabled
GD Version bundled (2.0.28 compatible)
dit zou het probleem niet moeten zijn? Wat is er wel aan de hand?
Hier mijn script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?
//maken en opslaan van thumnails
//Parameters:
//$p_thumb_file - name of the file (including path) where thumb should be saved to
//$p_photo_file - nam of the source JPEG file (including path) thatthumbnail should be created of
//$p_max_size - with and height (they will be the same) in pixels for thumbnail image
//$p_quality - quality of jpeg thumbnail
$p_thumb_file = 'database/thumbnails/'.$uploadname.'';
$p_photo_file = 'database/'.$uploadname.'';
$p_max_size = 150;
$p_quality = 80;
function photoCreateCropThumb ($p_thumb_file, $p_photo_file, $p_max_size, $p_quality) {
$pic = @imagecreatefromjpeg($p_photo_file);
if ($pic) {
$thumb = @imagecreatetruecolor ($p_max_size, $p_max_size) or die ("Can't create Image!");
$width = imagesx($pic);
$height = imagesy($pic);
if ($width < $height) {
$twidth = $p_max_size;
$theight = $twidth * $height / $width;
imagecopyresized($thumb, $pic, 0, 0, 0, ($height/2)-($width/2), $twidth, $theight, $width, $height);
} else {
$theight = $p_max_size;
$twidth = $theight * $width / $height;
imagecopyresized($thumb, $pic, 0, 0, ($width/2)-($height/2), 0, $twidth, $theight, $width, $height);
}
ImageJPEG ($thumb, $p_thumb_file, $p_quality);
}
}
echo var_dump($pic);
echo "".$pic. "";
echo "".$p_photo_file. "";
echo "".$p_thumb_file. "";
echo "".$p_max_size. "";
echo "".$p_quality. "";
phpinfo(); // alle info over de PHP config plus extensies
?>
//maken en opslaan van thumnails
//Parameters:
//$p_thumb_file - name of the file (including path) where thumb should be saved to
//$p_photo_file - nam of the source JPEG file (including path) thatthumbnail should be created of
//$p_max_size - with and height (they will be the same) in pixels for thumbnail image
//$p_quality - quality of jpeg thumbnail
$p_thumb_file = 'database/thumbnails/'.$uploadname.'';
$p_photo_file = 'database/'.$uploadname.'';
$p_max_size = 150;
$p_quality = 80;
function photoCreateCropThumb ($p_thumb_file, $p_photo_file, $p_max_size, $p_quality) {
$pic = @imagecreatefromjpeg($p_photo_file);
if ($pic) {
$thumb = @imagecreatetruecolor ($p_max_size, $p_max_size) or die ("Can't create Image!");
$width = imagesx($pic);
$height = imagesy($pic);
if ($width < $height) {
$twidth = $p_max_size;
$theight = $twidth * $height / $width;
imagecopyresized($thumb, $pic, 0, 0, 0, ($height/2)-($width/2), $twidth, $theight, $width, $height);
} else {
$theight = $p_max_size;
$twidth = $theight * $width / $height;
imagecopyresized($thumb, $pic, 0, 0, ($width/2)-($height/2), 0, $twidth, $theight, $width, $height);
}
ImageJPEG ($thumb, $p_thumb_file, $p_quality);
}
}
echo var_dump($pic);
echo "".$pic. "";
echo "".$p_photo_file. "";
echo "".$p_thumb_file. "";
echo "".$p_max_size. "";
echo "".$p_quality. "";
phpinfo(); // alle info over de PHP config plus extensies
?>
Inmiddels heb ik punt 1) van mijn vraag inmiddels opgelost door onder
move_uploaded_file($_FILES['userfile']['tmp_name'], "database/" . $uploadname);
de volgende regel te zetten:
chmod('database/'.$uploadname.'', 0666);
Alvast bedankt!
Gewijzigd op 01/01/1970 01:00:00 door SCO
Is er nog iemand die mij kan/wil helpen?
Ik zie je nergens die functie aanroepen, dan blijft alles leeg natuurlijk. En waar komt die $pic vandaan? Die bestaat echt niet buiten de functie hoor.
Gewijzigd op 01/01/1970 01:00:00 door SCO
Dit snap ik niet eens als ben ik een beginner in PHP.
Kan iemand mij nog helpen?