通过PHP保存图片到mysql,如何使用MySQL保存一个图片并且用PHP得到它
點上面“東哥IT筆記”,關注并星標
每天一篇業界最新技術分享
首先,我要說的是把一個圖片保存在MySQL中,再讀出來是一個很不推薦的做法。我們只是看看假如真的要這樣做,該如何做,最后我會和大家聊聊一般我們如何處理這種使用情況,以及不推薦這樣做的原因。
首先圖片是一個BLOB(Binary Large Object)是可以用來存儲二進制的數據。這就是用來保存圖片,文件等等的數據。因為這種object通常都很大,所以我們需要定義一個很大的域來保存信息。如何通過PHP來插入呢,其實很簡單:
1)讀取圖片成二進制
2)準備插入到數據庫
3)使用SQL語句插入相關數據到數據庫
下面我們來看看簡單的PHP代碼:// Image submitted by form. Open it for reading (mode "r")$fp = fopen($_FILES['file_name']['tmp_name'], "r");// If successful, read from the file pointer using the size of thefile (in bytes) as the length.if ($fp) {$content = fread($fp,$_FILES['file_name']['size']);fclose($fp);// Add slashes to thecontent so that it will escape special characters.// As pointed out,mysql_real_escape_string can be used here as well. Yourchoice.$content =addslashes($content);// Insert into the table"table" for column "image" with our binary string of data("content")mysql_query("Insertinto table (image) Values('$content')");}
這里我們使用了fread()來把圖片讀取成比特,有了相關比特數據之后,就是簡單地把它插入到BLOB的列就可以了。我們例子中image列是一個BLOB的數據類型。需要注意的是你選擇的BLOB的列大小需要能夠保存相應圖片的大小,因為MySQL還是有不同大小的BLOB數據類型的。
下面我們來看一下如何獲取圖片數據,同樣需要三個步驟:
1)設置content的type到圖片的類型
2)找到圖片,并且把它從數據庫中拿出來
3)顯示圖片
相關的代碼如下:// Read the row we want to pull out of the database.$result = mysql_query("select image from table where id =1");// If successful, fetch the row as an array and store the data fromthe "image" column into a variable.if ($result) {if ($row =mysql_fetch_array($result)) {$img =$row["image"];}}// Set the content type of this page to image/jpeg since the imagewe are pulling out is a jpgimage.header("Content-type: image/jpeg");// Echo out the image.echo "$img";
我們把數據從image列中拿出來,并且保存在一個變量中,然后我們設置相關content-type為image/jpeg就可以了,然后就可以顯示相關的內容了。
需要注意的是不要在header()調用之前打印任何部分,否則在調用header的時候會報錯"Headersalready sent"。
其實說白了,這個和別的BLOB數據的插入讀取是一樣的,并沒有任何差別。
下面我們來談談為什么不要把圖片保存到數據庫中呢?因為數據庫一般為了查詢的方便會進行分頁,而一些大的數據則會導致查詢變得很慢,所以我們還是不要這樣做為好。
那么推薦的做法是什么呢?我們一般會存儲相關文件的路徑就可以了。當想要找相關文件的時候,只要找到相關的路徑就可以了,然后再根據相關的路徑去磁盤找到需要顯示的文件就可以了。這樣做有兩個好處:1)這樣數據庫的數據就很小了。2)有了文件的名字,我們就可以用文件名來查找相關的文件了。
好了,這就是本文要講的內容了。
總結
以上是生活随笔為你收集整理的通过PHP保存图片到mysql,如何使用MySQL保存一个图片并且用PHP得到它的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从此爱情与我无关,只做一个嗜钱如命的渣男
- 下一篇: Windows10视频文件没有预览图的解