2011-05-11 75 views
26

我想使用web服务将文件插入驻留在远程Web服务器上的MYSQL数据库中。如何在MySQL数据库中插入文件?

我的问题是:什么类型的表列(如varchar等)将存储文件?插入语句在文件的情况下会有所不同吗?

回答

10

您需要使用BLOB,还有的小图标,中,长,只是BLOB,与其他类型的,根据选一满足您的尺寸需求。

TINYBLOB 255 
BLOB 65535 
MEDIUMBLOB 16777215 
LONGBLOB 4294967295 
(in bytes) 

insert语句是相当正常的。您需要使用fread然后addslashes来读取文件。

+0

感谢您的答复。所以当我创建插入语句时,我只需在插入的值部分输入“abc.pdf”?还是我需要做点别的? – meetpd 2011-05-11 04:06:16

+0

哦,不,你插入内容,这是你用fread读过的内容。 – 2011-05-11 04:07:55

+0

再次感谢您的快速回复。那么,你可以给我看一个插入样本的例子,看看它的样子吗? – meetpd 2011-05-11 04:09:49

10

其他的答案会给你一个好主意,如何完成你要求什么....

然而

不是有很多情况下,这是一个好主意。通常最好只将文件名存储在数据库中,并将文件存储在文件系统中。

这样你的数据库就小得多了,可以更容易运输,更重要的是更快的备份/恢复。

+1

我完全同意这一点。文件系统是为存储和提供文件而构建的 - 它们非常擅长。但是,Blob总是在那里,以防止它让你的工作更轻松。我可以看到一些托管设置,将文件干扰到数据库将节省时间,精力,甚至可以帮助提高速度。 – 2011-05-11 04:44:15

+0

@ hamlin11你是正确的,如果它只是几个文件。如果是用于某种文档存储区域,那么这样做会是一个很大的问题。 – 2011-05-11 04:51:21

4

文件大小由MySQL类型:

  • TINYBLOB 255字节= 0.000255 MB
  • BLOB 65535字节= 0.0655 MB
  • MEDIUMBLOB 16777215字节= 16.78 Mb
  • LONGBLOB 4294967295字节= 4294.97 MB = 4.295千兆