Thread: Blobs with perl
I want to insert a picture in a table from an internet browser using a script made in perl. Has somebody a code example with this kind a problem (I need only a code fragment)? Thanks!
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Tuesday 17 June 2003 02:00, cristi wrote: > I want to insert a picture in a table from an internet browser using a > script made in perl. > Has somebody a code example with this kind a problem (I need only a code > fragment)? > Despite PostgreSQL's powerful BLOB features, I would strongly suggest against storing these kind of things in the database. It is better to have it in a local file for several reasons. 1) Apache can server up local images lightning fast 2) You can edit local images with your favorite image editor (ie, Gimp, Photoshop) 3) You can ftp, scp, sftp the image around without a problem. 4) You can tar it up and archive it. 5) You can move it off of your burdened PostgreSQL database server machine and on to its own image server when your site becomes popular. While all of the above are certainly possible with PostgreSQL, it is a bit more complicated. And remember, while your database server is small now, it will grow, and grow, and grow, and grow. It will one day become the bottleneck in your operations. That is an inevitable fact of any dynamic website. - -- Jonathan Gardner <jgardner@jonathangardner.net> (was jgardn@alumni.washington.edu) Live Free, Use Linux! -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+7yYTWgwF3QvpWNwRAv3WAKDFrjfQUpQFmZFvVMismUeoxABoDQCfY/F7 LajclhvacQOgsn+6qnLEEwQ= =k0vW -----END PGP SIGNATURE-----
Hi,<br /><br /> For not so big applications you could consider converting the binary image/file into text, using base64,then store the resulting text.<br /> For example I have an app. where each member may have one or two images on theiraccount.<br /> So when the user upload's their image I base64 it and store the text.<br /> Then when we need to seethe image select the text and decode it back to binary format.<br /><br /> It work's well for me.<br /> This way onlytext is stored. It's also handy as you don't need to worry about file name's being the same.<br /> It will increase thefile size by about 30%.<br /><br /> Search the web for base64 example's, I'm sure you'll find examples to work with.<br/> You can email me off list if you like to see some PHP code which does this.<br /><br /> Cheers<br /> Rudi.<br/><br /><br /><br /><br /> Jonathan Gardner wrote:<br /><blockquote cite="mid200306170730.44746.jgardner@jonathangardner.net"type="cite"><pre wrap="">-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Tuesday 17 June 2003 02:00, cristi wrote: </pre><blockquote type="cite"><pre wrap="">I want to insert a picture in a tablefrom an internet browser using a script made in perl. Has somebody a code example with this kind a problem (I need only a code fragment)? </pre></blockquote><pre wrap=""> Despite PostgreSQL's powerful BLOB features, I would strongly suggest against storing these kind of things in the database. It is better to have it in a local file for several reasons. 1) Apache can server up local images lightning fast 2) You can edit local images with your favorite image editor (ie, Gimp, Photoshop) 3) You can ftp, scp, sftp the image around without a problem. 4) You can tar it up and archive it. 5) You can move it off of your burdened PostgreSQL database server machine and on to its own image server when your site becomes popular. While all of the above are certainly possible with PostgreSQL, it is a bit more complicated. And remember, while your database server is small now, it will grow, and grow, and grow, and grow. It will one day become the bottleneck in your operations. That is an inevitable fact of any dynamic website. - -- Jonathan Gardner <a class="moz-txt-link-rfc2396E" href="mailto:jgardner@jonathangardner.net"><jgardner@jonathangardner.net></a> (was <a class="moz-txt-link-abbreviated" href="mailto:jgardn@alumni.washington.edu">jgardn@alumni.washington.edu</a>) Live Free, Use Linux! -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+7yYTWgwF3QvpWNwRAv3WAKDFrjfQUpQFmZFvVMismUeoxABoDQCfY/F7 LajclhvacQOgsn+6qnLEEwQ= =k0vW -----END PGP SIGNATURE----- ---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend </pre></blockquote><br />
On Tuesday 17 June 2003 02:00 am, cristi wrote: > I want to insert a picture in a table from an internet browser using a > script made in perl. > Has somebody a code example with this kind a problem (I need only a code > fragment)? I put album covers into a database table, primarily because I wanted them closely tied to database data without having any dependancy on a specific filesystem structure. Anyway, performance isn't much to shout about, but here's the relevant code snippet that I use to insert album images. It uses LWP::UserAgent to download the jpeg, and then plug it into my database table: my $insert_cover = $dbh->prepare(qq| UPDATE Album SET CoverLarge = ? , CoverMedium = ? , CoverSmall = ? WHERE ID = ? |); my $small_url = "$image_url?S=$image_pid&X=60&Y=60"; my $medium_url = "$image_url?S=$image_pid&X=120&Y=120"; my$large_url = "$image_url?S=$image_pid&X=178&Y=178"; return unless ($image_pid); #print "\$id = \"$id\"\n"; #print "\$small_url = \"$small_url\"\n"; #print"\$medium_url = \"$medium_url\"\n"; #print "\$large_url = \"$large_url\"\n"; my $small_image = $ua->get($small_url)->content; my $medium_image = $ua->get($medium_url)->content; my $large_image = $ua->get($large_url)->content; $insert_cover->bind_param(1, $large_image, DBI::SQL_BINARY); $insert_cover->bind_param(2,$medium_image, DBI::SQL_BINARY); $insert_cover->bind_param(3, $small_image, DBI::SQL_BINARY); $insert_cover->bind_param(4, $id); $insert_cover->execute; This comes from a throw-away script I whipped up to migrate from an older system, so the code isn't all that clean (e.g. not commented, convoluted variable names, etc) but it should get you started. -- Michael A Nachbaur <mike@nachbaur.com>