hehe. Just for fun I decided to save a copy of the file in a /images folder and then save it into MySQL.
Now when I get a bad image in MySQL I also have a bad image in the /images folder. When I have a good image in MySQL I have a good image in /images. So that tells me the problem happens before this step (so before mysql_escape_string and addslashes (if I were using that)), so for some reason it appears the data error problem occurs before it reaches this script. Maybe it gets tainted on submission.... time to investigate more. Phantom wrote: > I am starting to wonder if the problem lies in mysql_escape_string and it's > manipulation of the binary data before inserting it into the mysql db > (INSERT.PHP) > > I have pretty much the same thing that Gareth has. I did check, the php > script does not time out. I have to at least leave the Header: > Content-Type: $ImgType otherwise the script will output a string and not an > image. > > Gareth Hastings wrote: > > > I found this worked fine for me, I used the same method to read the file > > into the database and the following lines to print the image out. > > > > I tested this with images from 1kb --> 945kb both gif/jpg and it worked > > fine > > > > <? > > $conn = mysql_connect("x", "x", "x"); > > $db = mysql_select_db ("img"); > > $result = mysql_query ("select * from img"); > > $image = mysql_result($result, 0, "image"); > > mysql_close($conn); > > > > echo $image; > > ?> > > > > Try taking out your header statements in display.php just to see what > > happens. Also, you script doesn't timeout half way through does it ? > > (wild guessing now) Does your web server show anything in the logs ? > > > > Gareth > > > > -----Original Message----- > > From: Michael Hall [mailto:[EMAIL PROTECTED]] > > Sent: 07 December 2001 14:08 > > To: phantom > > Cc: [EMAIL PROTECTED] > > Subject: Re: [PHP] Uploaded Image display problems > > > > I can't help you with the problem described below, but I can tell you > > this: > > > > I, like many others, do not store images as BLOBs in a database. I store > > them in a regular directory (/images), and just store the image name, > > path > > or URL in the database. This generally creates less hassles. > > > > Mick > > > > On Fri, 7 Dec 2001, phantom wrote: > > > > > With thanks to you who have helped me, I have constructed a PHP script > > > that allows the client to upload an image (jpg or gif) that is stored > > in > > > a MySQL Blob field. > > > > > > And I have a PHP script that will pull the binary data out of the > > MySQL > > > database and display the upload image for the client. > > > > > > THE PROBLEM: HALF MY GIF AND JPG FILES DO NOT DISPLAY PROPERLY WHEN > > > VIEWING THE DISPLAY.PHP SCRIPT (see below). Half display fine, half > > do > > > not. > > > > > > Has anyone else had this problem or know what I can do to remedy it? > > > Thank you. > > > > > > Source code below * form.htm, insert.php, display.php * > > > > > > ============ FORM HTM ============= > > > > > > <HTML> > > > <HEAD> > > > <TITLE>Insert Binary Data in a Database</TITLE> > > > </HEAD> > > > > > > <BODY> > > > <H1>Upload a File:</H1> > > > > > > <FORM enctype="multipart/form-data" method="post" action="insert.php"> > > > <input type="hidden" name="MAX_FILE_SIZE" value="200000"> > > > <INPUT type="file" name="img1" size="30"> > > > <br><br> > > > <INPUT type="submit" name="submit" value="Use This File"> > > > > > > </FORM> > > > </BODY> > > > </HTML> > > > > > > ============ INSERT PHP ============= > > > > > > <? > > > if (!isset($img1)) { > > > header("Location: insert_file.htm?Msg=EmptyUpload"); > > > exit(); > > > } > > > > > > $db = mysql_connect("localhost", $DB_Username, $DB_pass) > > > or die ("Unable to connect to server."); > > > mysql_select_db($DB_name) > > > or die ("Unable to select DB"); > > > > > > $binary_junk = mysql_escape_string(fread(fopen($img1, "r"), > > > filesize($img1))); > > > // original file used addslashes but here I used mysql_escape_string; > > > > > > $insert_data = "INSERT INTO ImageTable > > (ImgName,ImgSize,ImgType,ImgData) > > > VALUES ('$img1_name', '$img1_size', '$img1_type', '$binary_junk')"; > > > > > > mysql_query($insert_data) > > > or die ("Unable to insert data: ".mysql_error()); > > > > > > $PKey = mysql_insert_id(); > > > > > > ?> > > > > > > <HTML> > > > <HEAD> > > > <TITLE>Successful File Insertion!</TITLE> > > > > > > <H1>Success!</H1> > > > > > > <P>You have inserted the following into your database:<br> > > > <? echo "$img1_name";?> > > > a > > > <? echo "$img1_size";?> > > > byte file with a mime type of > > > <? > > > echo "$img1_type"; ?>.</P> > > > View Your Image <a href="display.php?PKey=<?=$PKey?>">HERE</a> > > > </BODY> > > > </HTML> > > > > > > ============ DISPLAY PHP ============= > > > > > > <? > > > $db = mysql_connect("localhost", $DB_Username, $DB_pass) > > > or die ("Unable to connect to server."); > > > mysql_select_db($DB_name) > > > or die ("Unable to select DB"); > > > > > > $get_image = "SELECT ImgType, ImgData FROM ImageTable WHERE > > PKey=$PKey"; > > > > > > $get_image_result = mysql_query($get_image) > > > or die ("Unable to get image."); > > > > > > $binary_junk = mysql_result($get_image_result,0,ImgData); > > > $file_type = mysql_result($get_image_result,0,ImgType); > > > > > > header("Content-Type: $file_type"); > > > header("Content-Length: " . strlen($binary_junk)); > > > echo "$binary_junk"; > > > > > > ?> > > > > > > > > > > > > > -- > > ################################ > > Michael Hall > > [EMAIL PROTECTED] > > [EMAIL PROTECTED] > > http://openlearningcommunity.org > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]