One of the most popular pages on the technical part of our web site relates to the uploading of images to a server from a local disc file via a browser, then storing those images on a database, and displaying them later. Another popular page relates to the same thing with .pdf file - and really the two requirements are the same technically - a piece of data that's to be treated as an indivisible block by the server - a "blob" or binary large object in database terms - is to be uploaded, stored are then returned back later.
We have two examples that I'll point you at. The first does the whole thing in one program, and is documented in our solution centre. It's
here and the demonstration - in this case - uses .jpg image files. The second example has been split into three parts which makes it much easier for the newcomer to take in -
an initial form, then
a script to store the binary data in a database and finally
a script to return something from the database. This example uses a .pdf file.
We've even provided facilities for you to try out our scripts - see
here for the image uploader and there's another script to search the image database based on the picture description
here. The .pdf uploader demo starts
here.
You'll find a whole load of user comments on the bottom of the .jpg image script, but I still get a lot of questions relating to how it works. That's no big surprise really - the script is quite short, but it makes use of a lot of PHP and MySQL facilities that aren't covered on many courses on the subject (as this is an example from
our course you can be assured we'll cover it if relevant to even one member of the group. And many of the questions are about failing uploads - again, no big surprise as in order for our script yo work, file upload needs to be configure "in" on the PHP server, a temporary directory assigned as appropriate as it probably won't be there by default on windows boxes, file permissions need to be set, a database needs to be set up and user name and passwords changed ... and if a newcomer misses any of the vital steps out it won't work.
Advise on sorting this out? I'm going to finish this article by reproducing a couple of paragraphs just written to a gent who was reporting zero length blobs in his database ...
"""The two most likely problems are that you don't have write permission set to allow for the web server to write the temporary disc files created, or that the directory in which they are to be written does not even exist. Judging by the fact that you are quoting the name of my blob field, I think you've pretty much copied the code from my site (and that's OK - that's what it's there for) but that makes it slightly less likely that it's too much of a coding error. Of course, without seeing your code / configuration details (I don't even know you're hosting server's operating system!) I can only guess in the dark!"""
"""Take it step by step - look at the temporary files to see that they're uploaded, look at the variable that hold the string to be put into the database and check that's non-zero along the way - then you'll have the process split into three pieces and will be able to find which one is the first one that's failing""" (written 2008-03-02, updated 2013-01-02)
2872
Associated topics are indexed under
H113 - Using MySQL Databases in PHP Pages [3455] MySQL, MySQLi, PDO or something else - how best to talk to databases from PHP - (2011-09-24)
[3035] How to display information from a database within a web page - (2010-11-07)
[2628] An example of an injection attack using Javascript - (2010-02-08)
[2561] The future of MySQL - (2010-01-03)
[2447] MySQL stored procedures / their use on the web from PHP - (2009-10-10)
[2432] Using print_r in PHP to explore mysql database requests - (2009-10-01)
[2320] Helping new arrivals find out about source code examples - (2009-08-03)
[2259] Grouping rows for a summary report - MySQL and PHP - (2009-06-27)
[2071] Setting up a MySQL database from PHP - (2009-03-08)
[1983] Keeping PHP code in database and running it - (2009-01-09)
[1010] Dates, times, clickable diarys in PHP - (2006-12-28)
[947] What is an SQL injection attack? - (2006-11-27)
[937] Display an image from a MySQL database in a web page via PHP - (2006-11-22)
[915] Paging through hundreds of entries - (2006-11-05)
[723] Viewing images held in a MySQL database via PHP - (2006-05-17)
[666] Database design - get it right from first principles - (2006-04-02)
[647] Checking for MySQL errors - (2006-03-15)
[581] Saving a MySQL query results to your local disc for Excel - (2006-01-29)
[572] Giving the researcher power over database analysis - (2006-01-22)
[515] MySQL - an FAQ - (2005-12-03)
[104] mysql_connect or mysql_pconnect in PHP? - (2004-10-30)
S156 - Interfacing Applications to MySQL Databases [3447] Needle in a haystack - finding the web server overload - (2011-09-18)
[3099] Perl - database access - DBD, DBI and DBIx modules - (2010-12-22)
[2790] Joining a MySQL table from within a Python program - (2010-06-02)
[2745] Connecting Python to sqlite and MySQL databases - (2010-04-28)
[2381] Checking the database connection manually - (2009-08-28)
[2263] Mysqldump fails as a cron job - a work around - (2009-06-30)
[1885] Hiding a MySQL database behind a web page - (2008-11-15)
[1518] Downloading data for use in Excel (from PHP / MySQL) - (2008-01-25)
[1450] Easy selection of multiple SQL conditions from PHP - (2007-11-30)
[1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
[663] Python to MySQL - (2006-03-31)
[644] Using a MySQL database from Perl - (2006-03-13)
Some other Articles
Languages compared - based on developer community sizeDefault file (MiMe types) for Apache httpd and Apache TomcatGuidlines for posting on a forumJava Compiler - needs all classes, compiles them all tooUploading to a MySQL database through PHP - examples and common questionsHST Power Car TravelWatch SouthWestCalling on Melksham / Trowbridge / Devizes / Chippenham businessesGetting somewhere with the train serviceTrying out our Java examples on our web siteJava - a demonstration of inheritance on just one page