日期:2014-05-20  浏览次数:20579 次

存多个文件问题--请教高手经验丰富的
有一张表,用一个字段存放文件,有可能是多个,也有可能只有一个!
我用的是blob来存的,存一个的ok,存多个的怎么存和取?
有什么好办法,存集合的话应该怎样?
是对于oracle数据库的.


------解决方案--------------------
这个。。。文件大小固定可能还好些,要不比较麻烦
------解决方案--------------------
如果你一定要把多个文件内容都塞到一个 blob 字段里的话,就自己定义一个内部格式好了,比如:

1. 头两个字节写一下文件的个数;

2. 紧跟着为每个文件留 4 个字节,写下文件的长度;

3. 紧跟着把每个文件的内容顺序写进去。
------解决方案--------------------

FILE_ID(INT) FILE(blob)
01111 XXX
01111 XXX_1
01112 SSS
01113 GGG

--------------------------------------------
第二个方案(采用文件服务器记录路径,文件一概上传到文件服务器)
FILE_ID FILE_PATH
01111 ftp://ftpusername:password@ftp.ty.com/1 
01111 ftp://ftpusername:password@ftp.ty.com/2 
01112 ftp://ftpusername:password@ftp.ty.com/4 
01113 ftp://ftpusername:password@ftp.ty.com/5 
---------------------------------------------
第三个方案(需要中间转化压缩,适合缺乏磁盘空间的企业)
FILE_ONE+FILE_TWO--war--->FILE_THREE
FILE_ID FILE_PATH
01111 FILE_THREE
01111 FILE_xxx
01113 FILE_xxx
-----------------------------------------------
第四个方案(一个恶心但是省事的方法,搜索较快)
FILE_ID(INT) FILE(blob)1~FILE(blob)N
------解决方案--------------------
探讨
如果你一定要把多个文件内容都塞到一个 blob 字段里的话,就自己定义一个内部格式好了,比如:

1. 头两个字节写一下文件的个数;

2. 紧跟着为每个文件留 4 个字节,写下文件的长度;

3. 紧跟着把每个文件的内容顺序写进去。

------解决方案--------------------
你还是做一个1:n 的关联表吧! 这样才是最合理的做法