CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  MySQL/Postgresql

mysql中该怎么样存储图像

楼主conquerHUST()2005-07-03 19:49:58 在 其他数据库开发 / MySQL/Postgresql 提问

本人由于工作需要,使用mysql数据库,需要在mysql中存储图像文件,我知道该使用blob类型的数据,但是不知道具体的操作是怎么样的,希望哪位高人给予解决 问题点数:40、回复次数:5Top

1 楼mathematician(数学家)回复于 2005-07-04 09:13:51 得分 20

如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。    
   
    一、本文概述  
   
    本文的主要内容如下:  
   
    *   在MySQL中建立一个新的数据库    
    *   一个怎样储存文件的例子程序    
    *   一个怎样访问文件的例子程序    
   
    二、在MySQL中建立一个新的database    
   
    首先,你必须在你的MySQL中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,你必须做下列步骤:    
   
    1.   进入MySQL控制器    
    2.   输入命令"create   database   binary_data;"    
    3.   输入命令"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    
   
    //   store.php3   -   by   Florian   Dittmer    
   
    ?>    
   
    //   如果提交了表单,代码将被执行:    
   
    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   "This   file   has   the   following   Database   ID:   $id";    
    MYSQL_CLOSE();    
    }   else   {    
   
    //   否则显示储存新数据的表单    
   
    ?>    
   
   
     @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.   你可以这样调用它:    
   
    五、怎样储存大于1MB的文件  
   
    如果你想储存大于1MB的文件,你必须对你的程序、PHP设置、SQL设置进行许多修改。    
   
    下面几条也许可以帮助你储存小于24MB的文件:    
   
    1)   修改   store.php3,将   MAX_FILE_SIZE   的值改成   24000000。    
   
    2)   修改你的PHP设置,在一般情况下,PHP只允许小于2MB的文件,你必须将max_filesize(在php.ini中)的值改成24000000    
   
    3)   去掉MYSQL的数据包大小限制,在一般情况下   MYSQL   小于1   MB的数据包。  
   
    4)   你必须用以下参数重启你的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    
   
    5)   如果仍然出错:可能是超时错误,如果你通过一个很慢的连接来储存一个很大的文件,PHP缺省的时间限制为30秒。你可以将max_execution_time(在php.ini中)的值改为-1   。Top

2 楼conquerHUST()回复于 2005-07-04 09:27:36 得分 0

楼上的文章我早就看过了,你那是在php环境下的,我要求的是在C#环境下,所以是不一样的.我知道是将文件转换为二进制流文件,但是我就是没有成功Top

3 楼yifei1900(逸飞)回复于 2005-07-09 15:58:46 得分 10

我在C++Builder的环境下,也没有成功。Top

4 楼iihero(iihero)回复于 2005-07-09 18:03:00 得分 10

C#的就更容易了。  
  我用过mysql的c-api,包装成了自己的类库。呵呵,甚至不用max_allowed_packet=24M   的参数限制都可以存储超过24M的文件。  
  要求mysql版本为4.0.12以上。  
   
  相信c#中调用 oledb实现,应该更加简单。Top

5 楼conquerHUST()回复于 2005-07-10 22:29:39 得分 0

楼上的不要只会说,我自己又不是没有试过,我用的是mysql   connector   net,根本不是什么oledbTop

相关问题

  • PHP+MySQL怎么实现图像文件(*.jpg,*.gif)的存储和提取显示???
  • 如何存储图像
  • 如何存储bmp图像?
  • 用mysql存储上传的图像文件该怎么写php语句显示出来?
  • 关于sql server的图像存储急!!!!
  • 在D6中存储图像的问题
  • 求教怎么样将640*480的图像转换成480*360的图像?
  • 在ACCESS中如何存储图像数据??
  • 关于数据库图像存储的问题
  • 救人一命,图像的存储问题

关键词

  • c#
  • 文件
  • 数据库
  • mysql
  • 二进制
  • 修改
  • php
  • 数据
  • 储存
  • 调用

得分解答快速导航

  • 帖主:conquerHUST
  • mathematician
  • yifei1900
  • iihero

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo