1. 程式人生 > >如何在MySQL資料庫中直接儲存圖片

如何在MySQL資料庫中直接儲存圖片

c  本文概述:

  在mysql中建立一個新的資料庫

  一個怎樣儲存檔案的例子程式

  一個怎樣訪問檔案的例子程式

  在mysql中建立一個新的database

  首先,你必須在你的mysql中建立一個新的資料庫,我們將會把那些二進位制檔案儲存在這個資料庫裡。在例子中我會使用下列結構,為了建立資料庫,你必須做下列步驟:


以下是引用片段:
進入MySql控制器
輸入命令"create database binary_data;"
輸入命令"use binary_data;"
輸入命令"CREATE TABLE binary_data ( id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
description CHAR(50), bin_data LONGBLOB, filename CHAR(50), filesize CHAR(50), filetype CHAR(50));" (不能斷行)

  如果沒有意外,資料庫和表應該建立好了。   一個怎樣儲存檔案的例子程式 用這個例子你可以通過Html表單將檔案傳輸到資料庫中。.

  store.php3 以下為引用的內容:

以下是引用片段:
 <?php

// store.php3 - by Florian Dittmer <[email protected]>
?>

<HTML>
<HEAD><TITLE>Store binary data into SQL Database</TITLE></HEAD>
<BODY>

<?php
// 如果提交了表單,程式碼將被執行:

if ($submit) {

// 連線到資料庫
// (你可能需要調整主機名,使用者名稱和密碼)

MYSQL_CONNECT( "localhost", "root", "password");
mysql_select_db( "binary_data");

$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));

$result=MYSQL_QUERY( "INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ".
"VALUES (’$form_description’,’$data’,’$form_data_name’,’$form_data_size’,’$form_data_type’)");

$id= mysql_insert_id();
print "<p>This file has the following Database ID: <b>$id</b>";

MYSQL_CLOSE();

} else {

// 否則顯示儲存新資料的表單
?>

<form method="post" action=" <?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
File Description:<br>
<input type="text" name="form_description" size="40">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>File to upload/store in database:<br>
<input type="file" name="form_data" size="40">
<p><input type="submit" name="submit" value="submit">
</form>

<?php

}

?>

</BODY>
</HTML>
 如果你執行了這個程式,你將會看見一個簡單的Html表單,單擊“瀏覽”選擇一個檔案,然後單擊提交。

  當檔案上傳至web伺服器之後,程式將會告訴你剛剛上傳的檔案的ID,記住這個ID,待會要用的。

  一個怎樣訪問檔案的例子程式

  你可以通過這個程式訪問你剛才儲存的檔案

  以下為引用的內容:

以下是引用片段:
 <?php

// getdata.php3 - by Florian Dittmer <[email protected]>
// 呼叫方法: getdata.php3?id=<id>

if($id) {

// 你可能需要調整主機名,使用者名稱和密碼:
@MYSQL_CONNECT( "localhost", "root", "password");

@mysql_select_db( "binary_data");

$query = "select bin_data,filetype from binary_data where id=$id";
$result = @MYSQL_QUERY($query);

$data = @MYSQL_RESULT($result,0, "bin_data");
$type = @MYSQL_RESULT($result,0, "filetype");

Header( "Content-type: $type");
echo $data;

};
?>

  程式必須知道要訪問那個檔案, 你必須將ID作為一個引數。

  例如: 一個檔案在資料庫中的ID為2. 你可以這樣呼叫它:

  getdata.php3?id=2如果你將圖片儲存在資料庫裡, 你可以向呼叫圖片一樣呼叫它。

  Example: 一個圖片檔案在資料庫中的ID為3. 你可以這樣呼叫它:

以下是引用片段:
<img src="getdata.php3?id=3">

  怎樣儲存大於1MB的檔案:

  如果你想儲存大於1MB的檔案,你必須對你的程式、PHP設定、SQL設定進行許多修改,。

  下面幾條也許可以幫助你儲存小於24MB的檔案:

  修改 store.php3 ,將 MAX_FILE_SIZE 的值改成 24000000。

  修改你的PHP設定,在一般情況下,PHP只允許小於2MB的檔案,你必須將max_filesize(在php.ini中)的值改成24000000

  去掉MYSQL的資料包大小限制,在一般情況下 MYSQL 小於1 MB的資料包.

  你必須用以下引數重啟你的MYSQL

以下是引用片段:
/usr/local/bin/safe_mysqld -O key_buffer=16M -O table_cache=128 -O sort_buffer=4M -O record_buffer=1M -O max_allowed_packet=24M

相關推薦

如何在MySQL資料庫直接儲存圖片

c  本文概述:   在mysql中建立一個新的資料庫   一個怎樣儲存檔案的例子程式   一個怎樣訪問檔案的例子程式   在mysql中建立一個新的database   首先,你必須在你的mysql中建立一個新的資料庫,我們將會把那些二進位制檔案儲存在這個資料庫裡。在例子中

MySQL資料庫儲存引擎

與其他資料庫軟體不同,MySQL資料庫提供了一種名為儲存引擎的概念。儲存引擎是MySQL資料庫管理系統的一個重要特徵,在具體開發中,為了提高MySQL資料庫管理系統的使用效率和靈活性,可以根據實際情況來選擇儲存引擎。簡單的說資料庫是用一張張表來儲存資訊的,那麼必然就會存在有的表簡單,有的

MySQL 資料庫如何儲存經緯度

資料庫儲存經緯度,需要採用什麼資料型別,小數點應該精確多少位?   赤道周長(米) 度數(度) 40076000 360 111322.2222 1

Java向Mysql資料庫儲存圖片等二進位制檔案的實現,以及常見報錯的解決!

Mysql資料庫的功能很強大,除了能儲存字元等常見資料以外,它同樣可以儲存圖片等二進位制檔案,本文以儲存照片為例。 一、Mysql儲存二進位制檔案常見報錯有: 1.com.mysql.jdbc.PacketTooBigException: Packet for query

python爬蟲系列(4.3-資料儲存mysql資料庫)

一、如果你對mysql資料庫還不太熟悉   二、基本操作 1、在python中使用pymysql連線mysql 2、安裝包 pip3 install pymysql 3、定義一個建立資料庫的方法(或者手動、SQL語句建立資料庫) # 定義一個建立資料庫的函

Mysql資料庫tinyint(1) 儲存數字時候取值為True、False解決辦法

boolean型別: 在Mysql中儲存boolean值時:會用1代表TRUE,0代表FALSE,因為boolean在MySQL裡的型別為tinyint(1) 遇到mysql資料庫儲存欄位型別為tin

資料庫讀取一個圖片儲存為一個圖片檔案

import java.sql.*; import java.io.*; public class WriteDB {  public static void main(String[] args)  {   Connection conn=null;   String dr

怎麼將大Byte陣列型別儲存到以blob方式Mysql資料庫

最近在做一個指紋方面的軟體,要用到Mysql資料庫,由於c#在連線資料庫方面比較的方面,就用了c#語言來寫,但是在一些細節方面的地方,遇到了比較棘手的問題,搞了好長時間才搞定,所以想就把經驗寫在下面。     文章主要解決的是,從指紋採集器上得到的指紋是一個很大的的byte

scrapy----將資料儲存MySQL資料庫

1.在pipelines.py中自定義自己的pipelineimport pymysql class PymysqlPipeline(object): def __init__(self): # 連線資料庫 self.connect =

從新增mysql的odbc驅動到powerDesigner將表結構直接匯入到mysql資料庫,再到資料庫錶轉化為powerDesigner的表結構

一、首先要在powerDesigner中新增mysql的odbc的資料來源連線驅動:地址如下 根據自己的系統選擇,注意這裡要選擇32位的, 然後選擇 之後進行安裝,之後你發現在powerDesigner中還是找不到mysql的odbc的驅動,為什麼那?因為還

使用Twisted框架實現非同步儲存資料到MySQL資料庫

概述 以爬取豆瓣讀書Top250排行榜為例。 關鍵是使用Twisted框架的adbapi,建立資料庫連線池物件,然後使用這個資料庫連線池物件進行資料庫操作, 這樣就實現了資料儲存的非同步方案。

【Python爬蟲】 輕鬆幾步 將 scrapy 框架 獲取得到的 資料 儲存MySQL 資料庫

以下操作 是在 一個 完整的  scrapy 專案中 新增 程式碼:         中介軟體 和 spiders 中的程式碼 都不需要修改 只需要 做下面兩件事就可以將資料儲存到資料庫了,不過在寫程式碼之前 我們要先:     在終端 執行命令:net star

Django PIL 直接從記憶體資料庫blob顯示圖片

最近想實現一個圖片驗證的Python程式碼,被PIL卡住了。因為看了PIL的一些demo,就是沒有看到直接將image轉換成記憶體資料或可以直接print資料的,總不成我要將image先存成臨時檔案吧?這我可接受不了,我試了好長時間終於在limodou那裡的一篇文章找到了靈感

使用python爬蟲抓取頁面之後,將頁面儲存Mysql資料庫

 #首先抓取html頁面內容,為了安全起見,有關url內容和mysql連線內容都以星號代替 headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/

MySQL資料庫主鍵和外來鍵的操作

在MySQL資料庫中,一般會涉及到主鍵和外來鍵,在上一個表中添加了主鍵之後,通常在下一個表中要新增外來鍵,但是添加了外來鍵之後,在實體類和資料庫中在加上上一個表的主鍵會比較好,這樣兩個表關聯之後,在上一個表查詢完成之後,將查詢是出來的欄位拿著去下一個庫裡查詢,會比較好。 select * fro

mysql資料庫 IN 和 EXISTS 的誤區

       前言:最近在看 《高效能mysql第三版》 這本書,讀到子查詢優化那章,書中說mysql會將in子查詢改寫成exists查詢(書中基於的mysql版本是5.1.50和5.5),於是乎我又上網找了下資料,發現網上說法幾乎都是: &

解決查詢MySQL資料庫重複資料的問題

今天遇到一個問題,需求是查詢新採集資料中 重複資料 的條數。在採集完資料對資料進行去重查詢時sql結果不正確,因為有一部分sql是在業務程式碼中進行拼接的: “SELECT COUNT(*) FROM (“ + sql + “)_AA;” 之前的sql:SELECT 1 FROM TAB

mysql資料庫的函式

    函式表示對輸入引數值返回一個具有特定關係的值,在mysql中使用函式可以極大的提高使用者對資料庫的管理效率。Mysql中的函式主要有數學函式,字串函式,日期函式,時間函式以及條件判斷函式、系統資訊函式和加密函式等。 1、流程控制函式  &nbs

mysql資料庫的運算子

    運算子是mysql執行特定算術或邏輯操作的符號,mysql的運算子主要有算術運算子、比較運算子、邏輯運算子、位操作運算子 1、算術運算子 運算子 作用 + 加法運算

mysql資料庫的增刪改操作

1、插入資料          語法格式: INSERT INTO table_name (column_list) VALUES (value_list);     &n