31. august 2006 - 21:16Der er
18 kommentarer og 1 løsning
Upload af billeder med form/gd/php/mysql!
Hej alle,
Jeg er i gang med at lege med billede uploads via php/mysql, men billedet, som jeg opretter i databasen bliver vist med en firkant med et rød kryds. Er der en, som kan give mig et hint?
<html> <head> <title>Upload your pic to our site!</title> </head> <body>
//upload image and check for image type //make sure to change your path to match your images directory $ImageDir ="/var/www/html/phptest/images/"; $ImageName = $ImageDir . $image_tempname;
if (move_uploaded_file($_FILES['image_filename']['tmp_name'], $ImageName)) {
//get info about the image being uploaded list($width, $height, $type, $attr) = getimagesize($ImageName);
switch ($type) { case 1: $ext = ".gif"; break; case 2: $ext = ".jpg"; break; case 3: $ext = ".png"; break; default: echo "Sorry, but the file you uploaded was not a GIF, JPG, or " . "PNG file.<br>"; echo "Please hit your browser's 'back' button and try again."; }
//insert info into image table
$insert = "INSERT INTO images (image_caption, image_username, image_date) VALUES ('$image_caption', '$image_username', '$today')"; $insertresults = mysql_query($insert) or die(mysql_error());
$lastpicid = mysql_insert_id();
$newfilename = $ImageDir . $lastpicid . $ext;
rename($ImageName, $newfilename);
}
?>
<html> <head> <title>Here is your pic!</title> </head> <body> <h1>So how does it feel to be famous?</h1><br><br> <p>Here is the picture you just uploaded to our servers:</p> <img src="/images/<?php echo $lastpicid . $ext; ?>" align="left"> <strong><?php echo $image_name; ?></strong><br> This image is a <?php echo $ext; ?> image.<br> It is <?php echo $width; ?> pixels wide and <?php echo $height; ?> pixels high.<br> It was uploaded on <?php echo $today; ?>. </body> </html>
Hej. I den nederste del i <img src... Har du et " tegn som er unødvendigt. Og jeg tvivler på at du skal have punktum med i din switch sætning. f. eks. $ext = "gif"; og husk at billede typen også kan stå med storebogstaver. :-)
Hej. I den nederste del i <img src... Har du et / tegn som er unødvendigt og bør fjernes. Og jeg tvivler på at du skal have punktum med i din switch sætning. f. eks. $ext = "gif"; og husk at billede typen også kan stå med storebogstaver. :-)
så lige nu ser det ud til du skal ændre. <img src="/images/<?php echo $lastpicid . $ext; ?>" align="left"> til <img src="../images/<?php echo $lastpicid . $ext; ?>" align="left">
Jeg har rettet efter din vejledning, men det virker stadig ikke. Billede-informationerne bliver oprettet og filerne oploades i den rigtig mappe. Men billedet bliver ikke vist i browseren. Mystisk, hvad kan det mon skyldes?
Hvordan kører man en chmod automatisk? Hvordan finder man ud, hvilket tal man skal bruge?
<?php chmod("/sti/til/fil", 755); // decimal; sikkert forkert chmod("/sti/til/fil", "u+rwx,go+rx"); // string; forkert chmod("/sti/til/fil", 0755); // octal; den korrekte værdi ?> ---- <?php // Gør en fil skrivbar og læsbar for ejeren, ingen andre kan intet gøre chmod("/sti/til/fil", 0600);
// Læs og skriveadgang for ejeren, alle andre kan læse chmod("/sti/til/fil", 0644);
// Alle rettigheder til ejeren, andre kan eksekvere og læse chmod("/sti/til/fil", 0755);
// Alle rettigheder til ejeren, hans gruppe kan eksekvere og læse, resten kan intet chmod("/somedir/somefile", 0750); ?>
<?php //connect to the database $link = mysql_connect("xxxxx", "xxxxx", "xxxxx") or die("Could not connect: " . mysql_error()); mysql_select_db("xxxxx", $link) or die (mysql_error());
//upload image and check for image type //make sure to change your path to match your images directory $ImageDir ="/var/www/html/phptest/images/"; $ImageName = $ImageDir . $image_tempname;
if (move_uploaded_file($_FILES['image_filename']['tmp_name'], $ImageName)) {
//get info about the image being uploaded list($width, $height, $type, $attr) = getimagesize($ImageName);
switch ($type) { case 1: $ext = ".gif"; break; case 2: $ext = ".jpg"; break; case 3: $ext = ".png"; break; default: echo "Sorry, but the file you uploaded was not a GIF, JPG, or " . "PNG file.<br>"; echo "Please hit your browser's 'back' button and try again."; }
//insert info into image table
$insert = "INSERT INTO images (image_caption, image_username, image_date) VALUES ('$image_caption', '$image_username', '$today')"; $insertresults = mysql_query($insert) or die(mysql_error());
$lastpicid = mysql_insert_id();
$newfilename = $ImageDir . $lastpicid . $ext;
rename($ImageName, $newfilename);
} chmod("/var/www/html/phptest/images/", 0755); ?> <html> <head> <title>Here is your pic!</title> </head> <body> <h1>So how does it feel to be famous?</h1><br><br> <p>Here is the picture you just uploaded to our servers:</p> <img src="/var/www/html/phptest/images/<?php echo $lastpicid . $ext; ?>" align="left"> <strong><?php echo $image_name; ?></strong><br> This image is a <?php echo $ext; ?> image.<br> It is <?php echo $width; ?> pixels wide and <?php echo $height; ?> pixels high.<br> It was uploaded on <?php echo $today; ?>. </body> </html>
Synes godt om
Slettet bruger
01. september 2006 - 20:38#16
Nej, for det du gør der er, at chmodde MAPPEN og ikke FILEN... Det er FILEN der ikke må læses. Gør sådan her: chmod($ImageName, 0755);
Tusind tak for hjælpen philip. Nu kan jeg komme videre med min php-læsning.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.