不知道你用的是什么数据库,如果是oracle的话,你可以把相关字段设为Blob型,再用php编程将文件load进库就是了。$sql = "insert into mypic(id, name,BINARYDATA) values(mypic_id.nextval, '$name', EMPTY_BLOB()) RETURNING BINARYDATA into :BINARYDATA";
$stmt = @OCIParse($conn, $sql);
/** 生成一个本地LOB对象的描述符 */
$lob = @OCINewDescriptor($conn, OCI_D_LOB);
@OCIBindByName($stmt, ':BINARYDATA', &$lob, -1, OCI_B_BLOB);
@OCIExecute($stmt);
/** 载入文件 */
$lob->savefile($bfile);
@OCIFreeDesc($lob);
@OCIFreeStatement($stmt);
$stmt = @OCIParse($conn, $sql);
/** 生成一个本地LOB对象的描述符 */
$lob = @OCINewDescriptor($conn, OCI_D_LOB);
@OCIBindByName($stmt, ':BINARYDATA', &$lob, -1, OCI_B_BLOB);
@OCIExecute($stmt);
/** 载入文件 */
$lob->savefile($bfile);
@OCIFreeDesc($lob);
@OCIFreeStatement($stmt);
这句代码里存放的是什么?
是路径还是文件的内容数据?
如果按你这样写的话,远程写入有可能会出现找不到文件呀是打不开文件的问题,不知道你试过没有,反正我是试过了!如果要存入数据库的数据文件是与服务器是本地关系,你的代码不会有问题,但是我问的是远程的,也是一个怎么读取远程文件的问题
如果提交到服务器的话(即action=http://服务器处理文件路径)
这时候就会产生一个临时文件在tmp,其文件名字存在$bfile所以服务器端可以通过$lob->savefile($bfile)载入文件
因为这时候对服务器而言已经是相对本地文件了
你自己亲自试过么?这个时候提交到服务器的只是一个字符串,比如在我的机器D:盘根目录里有test.dat文件,那么服务器通过name获得只是:"D:\\test.dat",
当它执行到$lob->savefile($bfile)时,php就会去服务器的d:盘根目录去找test.dat,而实际上这个文件在客户机器上,二者相距千里啊!!!!!:)
你可以亲自己试试!
------------------------------------------------------
纸上得来终觉浅,绝知此事要躬行!