熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

小技巧:怎樣在 Mysql 中直接儲存圖片

2013-11-23 21:00:23  來源: MySQL 

  如果你想把二進制的數據比如說圖片文件和HTML文件直接保存在你的MySQL數據庫那麼這篇文章就是為你而寫的!
  我將告訴你怎樣通過HTML表單來儲存這些文件怎樣訪問和使用這些文件
  
  本文概述
  在mysql中建立一個新的數據庫
  一個怎樣儲存文件的例子程序
  一個怎樣訪問文件的例子程序
  
  在mysql中建立一個新的database
  首先你必須在你的mysql中建立一個新的數據庫我們將會把那些二進制文件儲存在這個數據庫裡在例子中我會使用下列結構為了建立數據庫你必須做下列步驟
  
  進入MySql控制器
  輸入命令create database binary_data;
  輸入命令use binary_data;
  輸入命令CREATE TABLE binary_data ( id INT() NOT NULL AUTO_INCREMENT PRIMARY KEY
  description CHAR() bin_data LONGBLOB filename CHAR() filesize CHAR() filetype CHAR()); (不能斷行)
  如果沒有意外數據庫 和 表 應該建立好了
  一個怎樣儲存文件的例子程序 用這個例子你可以通過Html表單將文件傳輸到數據庫中
  
  storephp
  
  ?php
  
  // storephp by Florian Dittmer >
  ?>
  
  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 (descriptionbin_datafilenamefilesizefiletype)
  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/formdata>
  File Description:br>
  input type=text name=form_description size=>
  INPUT TYPE=hidden name=MAX_FILE_SIZE value=>
  br>File to upload/store in database:br>
  input type=file name=form_data size=>
  p>input type=submit name=submit value=submit>
  /form>
  
  ?php
  
  }
  ?>
  
  /BODY>
  /HTML>
  
  如果你執行了這個程序你將會看見一個簡單的Html表單單擊浏覽選擇一個文件然後單擊提交
  
  當文件上傳至web服務器之後程序將會告訴你剛剛上傳的文件的ID記住這個ID待會要用的
  
  一個怎樣訪問文件的例子程序
  
  你可以通過這個程序訪問你剛才儲存的文件
  
  ?php
  
  // getdataphp by Florian Dittmer >
  // 調用方法: getdataphp?id=id>
  
  if($id) {
  
  // 你可能需要調整主機名用戶名和密碼:
  @MYSQL_CONNECT( localhost root password);
  
  @mysql_select_db( binary_data);
  
  $query = select bin_datafiletype from binary_data where id=$id;
  $result = @MYSQL_QUERY($query);
  
  $data = @MYSQL_RESULT($result bin_data);
  $type = @MYSQL_RESULT($result filetype);
  
  Header( Contenttype: $type);
  echo $data;
  
  };
  ?>
  程序必須知道要訪問那個文件 你必須將ID作為一個參數
  例如: 一個文件在數據庫中的ID為 你可以這樣調用它:
  
  getdataphp?id=如果你將圖片儲存在數據庫裡 你可以向調用圖片一樣調用它
  Example: 一個圖片文件在數據庫中的ID為 你可以這樣調用它:
  img src=getdataphp?id=>
  怎樣儲存大於MB的文件:
  如果你想儲存大於MB的文件你必須對你的程序PHP設置SQL設置進行許多修改
  下面幾條也許可以幫助你儲存小於MB的文件
  
  修改 storephp 將 MAX_FILE_SIZE 的值改成
  修改你的PHP設置在一般情況下PHP只允許小於MB的文件你必須將max_filesize(在phpini中)的值改成
  
  去掉MYSQL的數據包大小限制在一般情況下 MYSQL 小於 MB的數據包
  你必須用以下參數重啟你的MYSQL
  /usr/local/bin/safe_mysqld O key_buffer=M O table_cache= O sort_buffer=M O record_buffer=M O max_allowed_packet=M
  
  如果仍然出錯
  可能是超時錯誤如果你通過一個很慢的連接來儲存一個很大的文件PHP缺省的時間限制為
  你可以將max_execution_time(在phpini中)的值改為

From:http://tw.wingwit.com/Article/program/MySQL/201311/29424.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.