Gå til innhold

Hvorfor får jeg kun lastet inn noen bilder?


Anbefalte innlegg

Har denne koden i index.php, og skal bruke den til å laste opp bilder, og inn i databasen:

 

index.php:

 

<?php

$conn = mysql_connect("localhost", "dufus", "dufus") OR DIE (mysql_error());

@mysql_select_db ("dufusdb", $conn) OR DIE (mysql_error());

 

// Do this process if user has browse the file and click the submit button

if ($_FILES) {

$image_types = Array ("image/bmp",

"image/jpeg",

"image/pjpeg",

"image/gif",

"image/x-png");

 

$userfile = addslashes (fread (fopen ($_FILES["userfile"]["tmp_name"], "r"), filesize ($_FILES["userfile"]["tmp_name"])));

$file_name = $_FILES["userfile"]["name"];

$file_size = $_FILES["userfile"]["size"];

$file_type = $_FILES["userfile"]["type"];

 

if (in_array (strtolower ($file_type), $image_types)) {

$sql = "INSERT INTO image (image_type, image, image_size, image_name, image_date) ";

$sql.= "VALUES (";

$sql.= "'{$file_type}', '{$userfile}', '{$file_size}', '{$file_name}', NOW())";

@mysql_query ($sql, $conn);

Header("Location:".$_SERVER["PHP_SELF"]);

exit();

}

}

 

// Do this process of user has click a file name to view or remove

if ($_GET) {

$iid = $_GET["iid"];

$act = $_GET["act"];

switch ($act) {

case rem:

$sql = "DELETE FROM image WHERE image_id=$iid";

@mysql_query ($sql, $conn);

Header("Location:./index.php");

exit();

break;

default:

print "<img src=\"image.php?iid=$iid\">";

break;

}

}

 

?>

<html>

<head>

<title>Storing Images in DB</title>

</head>

<body>

<form method="post" enctype="multipart/form-data">

Select Image File: <input type="file" name="userfile" size="40"><input type="submit" value="submit">

</form>

<?php

$sql = "SELECT * FROM image ORDER BY image_date DESC";

$result = mysql_query ($sql, $conn);

if (mysql_num_rows($result)>0) {

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

$i++;

$str .= $i.". ";

$str .= "<a href=\"index.php?iid=".$row["image_id"]."\">".$row["image_name"]."</a> ";

$str .= "[".$row["image_date"]."] ";

$str .= "[".$row["image_size"]."] ";

$str .= "[<a href=\"index.php?act=rem&iid=.$row["image_id]."\">Remove</a>]<br>";

}

print $str;

}

?>

</body>

</html>

 

 

I tillegg har jeg en fil som heter image.php som går så her:

<?php

 

// database connection

$conn = mysql_connect("localhost", "dufus", "dufus") OR DIE (mysql_error());

@mysql_select_db ("dufusdb", $conn) OR DIE (mysql_error());

$sql = "SELECT * FROM image WHERE image_id=".$_GET["iid"];

$result = mysql_query ($sql, $conn);

if (mysql_num_rows ($result)>0) {

$row = @mysql_fetch_array ($result);

$image_type = $row["image_type"];

$image = $row["image"];

Header ("Content-type: $image_type");

print $image;

}

?>

 

Problemet er at jeg ikke får kjørt alle bildene inn i databasen. Hvis jeg tar bilder med liten filstørrelse går det greit. Hvis jeg tar bilder som kanskje er 1700X1200 eller noe, går det ikke greit. Får ingen feilmelding, men det blir ikke lagret i databasen.

 

Feilmeldingen jeg får fra img.php er følgende:

 

arning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in P:\webserver\im2db\image.php on line 11

 

Noen som kan ta et kjapt blikk og fortelle meg noe? For jeg schønner det ikke.

Lenke til kommentar
Videoannonse
Annonse

Grunnen til at du ikke får lagret store bilder, kan være at du har feil "column type" på image feltet. I vanlig Blob kan du bare lagre 64Kb. Bruk Mediumblob. Den svelger 16Mb. Hvis ikke det er problemet, så må du sjekke upload limits i konfigurasjon.

 

Problem 2:

Prøv å sett inn

print mysql_error();

i linja under mysql_query(), og sett // foran header(). Fortell oss så hva som skjer.

Lenke til kommentar
Grunnen til at du ikke får lagret store bilder, kan være at du har feil "column type" på image feltet. I vanlig Blob kan du bare lagre 64Kb. Bruk Mediumblob. Den svelger 16Mb. Hvis ikke det er problemet, så må du sjekke upload limits i konfigurasjon.

 

Problem 2:

Prøv å sett inn

print mysql_error();

i linja under mysql_query(), og sett // foran header(). Fortell oss så hva som skjer.

 

Meldingen som kommer er: MySQL server has gone away

 

I SQL filen har jeg følgende kode for image:

 

CREATE TABLE image (

image_id int(10) unsigned NOT NULL auto_increment,

image_type varchar(50) NOT NULL default '',

image longblob NOT NULL,

image_size bigint(8) NOT NULL default '0',

image_name varchar(255) NOT NULL default '',

image_date datetime NOT NULL default '0000-00-00 00:00:00',

UNIQUE KEY image_id (image_id)

);

if (in_array (strtolower ($file_type), $image_types)) {

$sql = "INSERT INTO image (image_type, image, image_size, image_name, image_date) ";

$sql.= "VALUES (";

$sql.= "'{$file_type}', '{$userfile}', '{$file_size}', '{$file_name}', NOW())";

@mysql_query ($sql, $conn);

print mysql_error();

//Header("Location:".$_SERVER["PHP_SELF"]);

exit();

}

 

Sånn ser koden min ut nå etter at jeg kommenterte ut header, og brukte mysql_error();

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