Image upload + rename + backup
Ik ben totaal nieuw hier en in PhP.
Ik heb een eeuwigheid gezocht naar een script dat een foto kan uploaden die ik zelf kan renamen.
Ik heb na een tijd zoeken een script gevonden waarbij ik gewoon een foto kan browsen, de eventueel nieuwe bestandsnaam kan invullen en dan uploaden. Helaas werkte dit script niet en met de hulp die ik daar kreeg schoot het ook niet op.
Wat ik wil?
Ik wil een script waarbij ik een foto kan browsen.
Vervolgens de nieuwe bestandsnaam kan invoeren.
Als dit bestand al bestaat op de server, het bestaande bestand renamen naar bijv. foto1.bak
Waarom wil ik dit?
Ik ben beginnend Flash designer en heb voor een client van mij een dynamische foto sectie gemaakt. De client wil maar max. 14 foto's op de site kwijt maar wil deze wel kunnen aanpassen zonder enige kennis van computers. Dit moet dus zo makkelijk mogelijk. bestandsnaam invullen dus en knopje drukken.
Voor de duidelijkheid!
Ik vraag niet om een compleet script. Ik wil gewoon een goede start maken zodat ik ook leer met php om te gaan.
Alvast bedankt voor degene die mij hulp kan bieden.
Goeny
Je moet er alleen zelf aan gaan modificeren, maar dat lukt je denk ik wel :P
Hier is hij :)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
/**
* @author
* @copyright 2008
*/
if(isset($_POST['upload_avatar']))
{
if ((($_FILES["avatar"]["type"] == "image/jpeg")
|| ($_FILES["avatar"]["type"] == "image/pjpeg")))
{
if ($_FILES["avatar"]["error"] > 0)
{
echo "Error: " . $_FILES["avatar"]["error"] . "<br />";
}
else
{
// This is the temporary file created by PHP
$uploadedfile = $_FILES['avatar']['tmp_name'];
// Create an Image from it so we can do the resize
$src = imagecreatefromjpeg($uploadedfile);
// Capture the original size of the uploaded image
list($width,$height)=getimagesize($uploadedfile);
// For our purposes, I have resized the image to be
// 75 pixels heigh, and maintain the original aspect
// ratio. This prevents the image from being "stretched"
// or "squashed". If you prefer some max heigth other than
// 75, simply change the $newheigth variable
$newheight=75;
$newwidth=($width/$height)*75;
$tmp=imagecreatetruecolor($newwidth,$newheight);
// this line actually does the image resizing, copying from the original
// image into the $tmp image
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
// now write the resized image to disk. I have assumed that you want the
// resized, uploaded image file to reside in the ./images subdirectory.
$name = $_FILES['avatar']['name'];
$filename = "avatar/". $name;
$bigname = "avatargroot/". $name;
imagejpeg($tmp,$filename,100);
imagejpeg($src,$bigname,100);
imagedestroy($src);
imagedestroy($tmp); // NOTE: PHP will clean up the temp file it created when the request
// has completed.
}
}
}
else
{
?>
<form action="index.php?p=useredit.php" method="post" enctype="multipart/form-data">
<label for="file">Avatar:</label>
<input type="file" name="avatar" id="avatar" />
<input type="submit" name="upload_avatar" value="Upload!" />
</form>
<br />
<?php
}
?>
/**
* @author
* @copyright 2008
*/
if(isset($_POST['upload_avatar']))
{
if ((($_FILES["avatar"]["type"] == "image/jpeg")
|| ($_FILES["avatar"]["type"] == "image/pjpeg")))
{
if ($_FILES["avatar"]["error"] > 0)
{
echo "Error: " . $_FILES["avatar"]["error"] . "<br />";
}
else
{
// This is the temporary file created by PHP
$uploadedfile = $_FILES['avatar']['tmp_name'];
// Create an Image from it so we can do the resize
$src = imagecreatefromjpeg($uploadedfile);
// Capture the original size of the uploaded image
list($width,$height)=getimagesize($uploadedfile);
// For our purposes, I have resized the image to be
// 75 pixels heigh, and maintain the original aspect
// ratio. This prevents the image from being "stretched"
// or "squashed". If you prefer some max heigth other than
// 75, simply change the $newheigth variable
$newheight=75;
$newwidth=($width/$height)*75;
$tmp=imagecreatetruecolor($newwidth,$newheight);
// this line actually does the image resizing, copying from the original
// image into the $tmp image
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
// now write the resized image to disk. I have assumed that you want the
// resized, uploaded image file to reside in the ./images subdirectory.
$name = $_FILES['avatar']['name'];
$filename = "avatar/". $name;
$bigname = "avatargroot/". $name;
imagejpeg($tmp,$filename,100);
imagejpeg($src,$bigname,100);
imagedestroy($src);
imagedestroy($tmp); // NOTE: PHP will clean up the temp file it created when the request
// has completed.
}
}
}
else
{
?>
<form action="index.php?p=useredit.php" method="post" enctype="multipart/form-data">
<label for="file">Avatar:</label>
<input type="file" name="avatar" id="avatar" />
<input type="submit" name="upload_avatar" value="Upload!" />
</form>
<br />
<?php
}
?>
Edit:
Dit zijn overingens gewoon leuke functies om naar te kijken als je iets wilt met foto's upladen.
Ik denk dat je met deze gegevens een heel eind komt, alleen het backuppen zal wat moeilijker worden,, denk ik.
Dit zijn overingens gewoon leuke functies om naar te kijken als je iets wilt met foto's upladen.
Ik denk dat je met deze gegevens een heel eind komt, alleen het backuppen zal wat moeilijker worden,, denk ik.
Gewijzigd op 01/01/1970 01:00:00 door Nicoow Unknown
PS. is het niet mogelijk om het script te laten controleren of de bestandsnaam al bestaat en dan die vervolgens te renamen? Dit vraag ik omdat je zegt dat het backuppen moeilijk wordt.
Wat je ook kunt doen is zo'n lijst maken, genummerd tot 14. En dan naast ieder 'kies bestand' boxje een thumbnail van de huidige foto ingeven. Combineer dat dan met een resize functie en je bent klaar.
De resize functie is eigenlijk helemaal niet nodig. Die heb ik al ingebouwd in het flash bestand. Tenminste, in de weergave wordt het bestand geresized. 1x in de thumbnail en 1x in de hoofdweergave. Het maakt dus eigenlijk helemaal niet uit of de afbeelding nou 80x80px is of 2600x2600. (hoewel dit wel rare voorbeelden zijn aangezien de resize in verhouding is vanuit 1280x1024.)