我想用PHP将上传的文件保存(插入)到数据库中,数据库字段的类型是varbinary。
最后,我想要获得 VarBinary(输出)的内容,就像在 C# 中读取文件然后将其存储在字节数组中并将数组插入到 VarBinary 中一样。
我与数据库的连接也是通过 sqlsrv 进行的。
我的文件类型只有 PDF 和图像。
我尝试了这段代码,但我的输出与 C# 的输出不同:
$handle=@fopen($_FILES["my_file"]["tmp_name"], 'rb');
$content= file_get_contents($_FILES["my_file"]["tmp_name"]);
$content = unpack("N*",$content);
$content= implode($content);
$sql = "INSERT INTO files (file_data) VALUES (CONVERT(varbinary(MAX)?)";
$params=array();
array_push($params,$content);
$table=sqlsrv_query( $conn, $sql, $params);
“$conn”是我正常工作的连接的名称。
PHP 没有“字节数组”数据类型。它有一个字符串类型,即is用于所有意图和目的的字节数组。要将文件的二进制内容读取到与 PHP 中最接近字节数组的变量中,请执行以下操作:
$content = file_get_contents($_FILES['my_file']['tmp_name']);
是的,就是这样。没什么可做的了。
我对 sqlsrv API 不是特别熟悉,但仔细阅读它的文档 http://php.net/manual/en/function.sqlsrv-query.php看来您可以(需要?)以这种方式设置一个标志来将数据标记为二进制:
sqlsrv_query($conn, 'INSERT INTO files (file_data) VALUES (?)', array(
array($content, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING, SQLSRV_SQLTYPE_BINARY)
));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)