+ -
当前位置:首页 → 问答吧 → 請問在php的上傳檔案,結合使用mydql儲存檔案,要如何實現呢?

請問在php的上傳檔案,結合使用mydql儲存檔案,要如何實現呢?

时间:2010-11-16

来源:互联网

请问在php的上传档案,结合使用mydql储存档案,要如何实现呢?
我知道mysql要用blob,但是我要怎么把资料复制进去呢?
在php如果要把上传的档案储存都是用copy(),但是,要如何复制进去mysql呢?
可否提供给我一个范例呢?
谢谢

作者: swcjason   发布时间: 2010-11-16

劝你不要这么作
一来效率不高
二来存取档案你会自找麻烦

作者: 平衡   发布时间: 2010-11-16

引用自: ricky 於 2010-11-16 09:58
劝你不要这么作
一来效率不高
二来存取档案你会自找麻烦

喔喔~哪一般看到网页可以提供人坐上传的行为,哪又是如何办到的呢?

作者: ricky   发布时间: 2010-11-16

引用自: 平衡 於 2010-11-16 20:46
引用自: ricky 於 2010-11-16 09:58
劝你不要这么作
一来效率不高
二来存取档案你会自找麻烦
喔喔~哪一般看到网页可以提供人坐上传的行为,哪又是如何办到的呢?

个人想法:
1. 有一个档案正式区与暂存区.
2. 档案全部采用特定编码. (为了避免档名重复, 以及透过演算法可以分散档案, 提高存取速度)
3. 资料库内存放原始档名, 上传者资料, 对应的真正档名.

使用者上传档案时, 先将档案丢到暂存区(改名, 扫毒及过滤), 再转存到正式区,
然后在资料库留下完成上传的资料.

下载时, 透过资料库找到真正的档案, 并在下载时以原本的档名提供下载.

暂存区则是 session 已经不存在, 或者每隔一镇子就去清掉.

作者: 平衡   发布时间: 2010-11-17

引用自: slime 於 2010-11-17 01:49
引用自: 平衡 於 2010-11-16 20:46
引用自: ricky 於 2010-11-16 09:58
劝你不要这么作
一来效率不高
二来存取档案你会自找麻烦
喔喔~哪一般看到网页可以提供人坐上传的行为,哪又是如何办到的呢?

个人想法:
1. 有一个档案正式区与暂存区.
2. 档案全部采用特定编码. (为了避免档名重复, 以及透过演算法可以分散档案, 提高存取速度)
3. 资料库内存放原始档名, 上传者资料, 对应的真正档名.

使用者上传档案时, 先将档案丢到暂存区(改名, 扫毒及过滤), 再转存到正式区,
然后在资料库留下完成上传的资料.

下载时, 透过资料库找到真正的档案, 并在下载时以原本的档名提供下载.

暂存区则是 session 已经不存在, 或者每隔一镇子就去清掉.

我懂你的意思~这样资料库就变成在储存档案资讯的地方~以方便取得档案的位置或档名之类的~
谢谢你的解析

作者: slime   发布时间: 2010-11-17

我自己的作法是这样
当user上传一个档案后
1.使用uuid or guid取得一个唯一的值,当然如果你是用mysql的话,auto increment的id栏位就是一个唯一值了。
2.建立一个存放档案的目录,将上传档案放到这个目录并rename像这样 $FileName="$UniqueID.file"
3.把档案的原始档名,回写到db栏位中。

当使用者要取得档案时你只要找出对应的资料就可以取回$UniqueID,透过$UniqueID你就可以找到这个档案了。

作者: 平衡   发布时间: 2010-11-17

引用自: ricky 於 2010-11-17 15:59
我自己的作法是这样
当user上传一个档案后
1.使用uuid or guid取得一个唯一的值,当然如果你是用mysql的话,auto increment的id栏位就是一个唯一值了。
2.建立一个存放档案的目录,将上传档案放到这个目录并rename像这样 $FileName="$UniqueID.file"
3.把档案的原始档名,回写到db栏位中。

当使用者要取得档案时你只要找出对应的资料就可以取回$UniqueID,透过$UniqueID你就可以找到这个档案了。
谢谢

作者: ricky   发布时间: 2010-11-24