在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。
但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。
_RecordsetPtr pRecordset = m_conn.GetRecordSet(strSql)// strPicContent 插入数据指针
if (pRecordset->RecordCount != 0)
{
pRecordset->MoveLast()
}
pRecordset->AddNew()
pRecordset->PutCollect(_T("Field1"), _variant_t(strPicPath))
pRecordset->PutCollect(_T("Field2"), _variant_t(strPicType))
pRecordset->PutCollect(_T("Field3"), _variant_t(nPicIndex))
pRecordset->PutCollect(_T("Field4"), _variant_t(strFirstUrl))
pRecordset->PutCollect(_T("Field5"), _variant_t(strParentUrl))
VARIANT varBLOB
SAFEARRAY *psa
SAFEARRAYBOUND rgsabound[1]
rgsabound[0].lLbound = 0
rgsabound[0].cElements = (ULONG)llPicCapacity
// 创建SAFEARRAY对象
psa = SafeArrayCreate(VT_UI1, 1, rgsabound)
for (long i = 0i <(long)llPicCapacityi++)
{
// 将strPicContent指向的二进制数据保存到SAFEARRAY对象psa中
SafeArrayPutElement(psa, &i, strPicContent+i)
}
// 将varBLOB的类型设置为BYTE类型的数组
varBLOB.vt = VT_ARRAY | VT_UI1
// 为varBLOB变量赋值
varBLOB.parray = psa
// 加入BLOB类型的数据
pRecordset->GetFields()->GetItem("Field6")->AppendChunk(varBLOB)
::VariantClear(&varBLOB)
pRecordset->PutCollect(_T("Field7"),
_variant_t((long long)llPicCapacity))
int nCount = pRecordset->RecordCount
pRecordset->Update()
1、用户上传文档后,把文档存储到某个路径下,然后在数据库中存储这个路径和文档名2、用户上传文档后,进行二进制读取(流处理),然后把读取出来的二进制存储到数据库中
首先我们要进行读取文件
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!")
然后把 $myfile 存储到mysql中
sql ="insert into table_name (fn) values($myfile)""
这样就把文档转变成二进制之后,存储到了mysql数据库,下次取出时,只需要把取出的数据存储到一个文档中
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)