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)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
S156 - Interfacing Applications to MySQL Databases [104] mysql_connect or mysql_pconnect in PHP? - (2004-10-30)
[644] Using a MySQL database from Perl - (2006-03-13)
[663] Python to MySQL - (2006-03-31)
[723] Viewing images held in a MySQL database via PHP - (2006-05-17)
[1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
[1450] Easy selection of multiple SQL conditions from PHP - (2007-11-30)
[1518] Downloading data for use in Excel (from PHP / MySQL) - (2008-01-25)
[1885] Hiding a MySQL database behind a web page - (2008-11-15)
[2263] Mysqldump fails as a cron job - a work around - (2009-06-30)
[2381] Checking the database connection manually - (2009-08-28)
[2745] Connecting Python to sqlite and MySQL databases - (2010-04-28)
[2790] Joining a MySQL table from within a Python program - (2010-06-02)
[3035] How to display information from a database within a web page - (2010-11-07)
[3099] Perl - database access - DBD, DBI and DBIx modules - (2010-12-22)
[3447] Needle in a haystack - finding the web server overload - (2011-09-18)
[3455] MySQL, MySQLi, PDO or something else - how best to talk to databases from PHP - (2011-09-24)
[4436] Accessing a MySQL database from Python with mysql.connector - (2015-02-21)
H113 - Using MySQL Databases in PHP Pages [515] MySQL - an FAQ - (2005-12-03)
[572] Giving the researcher power over database analysis - (2006-01-22)
[581] Saving a MySQL query results to your local disc for Excel - (2006-01-29)
[647] Checking for MySQL errors - (2006-03-15)
[666] Database design - get it right from first principles - (2006-04-02)
[915] Paging through hundreds of entries - (2006-11-05)
[937] Display an image from a MySQL database in a web page via PHP - (2006-11-22)
[947] What is an SQL injection attack? - (2006-11-27)
[1010] Dates, times, clickable diarys in PHP - (2006-12-28)
[1983] Keeping PHP code in database and running it - (2009-01-09)
[2071] Setting up a MySQL database from PHP - (2009-03-08)
[2259] Grouping rows for a summary report - MySQL and PHP - (2009-06-27)
[2320] Helping new arrivals find out about source code examples - (2009-08-03)
[2432] Using print_r in PHP to explore mysql database requests - (2009-10-01)
[2447] MySQL stored procedures / their use on the web from PHP - (2009-10-10)
[2561] The future of MySQL - (2010-01-03)
[2628] An example of an injection attack using Javascript - (2010-02-08)
[4378] What FGW passengers want to talk about / and PHP programming to find out - (2015-01-01)
[4483] Moving from mysql to mysqli - simple worked example - (2015-05-03)
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