开发者

PHP & MYSQL - what should I do with my image data?

I'm creating a blog with a featured image on each post. I have a dilemma, I'm unsure what to do with my image data...

Should I insert image data into my MYSQL database using BLOB?

Or should I just create an uploader which makes a directory into the users images folder and upload the photo that way...then just reference it directly in the image field when adding a Blog Post?

开发者_开发知识库

Is there a standardised way?

Kind regards, adam


Upload the files to your server and save the location of the file in your database. Less strain on your DB and your HTTP daemon is better at serving images than MySQL.


The general approach is not to store files in DB, unless you understand why do you need it to be stored there. So, since you are not sure, it's much simplier storing them in upload folder.

But, just in case you decide you need storing files (no matter images or some other) in DB, you have to declare BLOB field and then save it using some BLOB-supporting DB mechanism. 'PHP's MySQLi extension: Storing and retrieving blobs' is a good example of how it can be made


You should store images in folder. Click on below link from where you can get idea how to crop different-different size images and store images name in to database table:

How can I upload images in a normal insert form (MySql)? after upload the image should have three versions of different sizes and different names


convert the image data to base64. This can be done within PHP:

<? $image=file_get_contents("image.png"); $image=base64_encode($image); ?>

Storing images in a DB is a good idea for secure images.


Always store images, music files etc in system files on disk, and then store the urls to them in the database. That will make it

1) faster

2) easier to configure security settings

3) better in any ways I can imagine

Disadvantage
If file system is corrupted you will have hard time recovering.

You can also use third party Image hosting sites too, you can use Amazon S3 or Mosso Cloud Files.

Problem with file system is it is difficult to scale.

Facebook uses cassandra to store images.

Since it is blog you can store images in filesystem.


Both are valid approaches.

They have different advantages/disadvantages.

Storing it in the database means you need to add extra code to change the image to a representation which will fit inside a INSERT/UPDATE statement (base64 is one approach, and requires equivalent decode, but you could just use mysql_real_escape_string()). Although you can't query the image directly (other than finding exact matches) it may reduce the number of seek and I/O operations required to retrieve the data compared with looking up the path in the database then retrieving the file.

It's also a lot simpler to set up replication of a database compared with setting up replication of the database AND the filesystem if you run on multiple nodes. And there's the issue og keeping filesystem and database backups synchronized.

OTOH, using a filesystem makes your data tables much smaller, and therefore faster to retrieve records from.

which makes a directory into the users images folder

You certainly don't want to allow users to upload content directly into your webserver's document tree - regardless of which route you take, the data should be stored in a location not directly accessible by the webserver but accessible by your code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜