我正在尝试在php中读取文件并将其存储为sql server中的varbinary。该过程适用于文本文件,但是图像仍然有问题。
我正在使用以下行将文件内容读取为字符串,但是我不确定那不是我的问题所在:
$data = NULL;
$validators = NULL;
if($file = file_save_upload('file', $validators, FALSE, 0)){
$data = file_get_contents($file->getFileUri());
$filename = $file->getFilename();
}
然后我将$ data字符串传递给准备好的语句:
$conn = $this->_get_connection();
$sql = "
EXEC JC_Update_Document_SP
...
?,
...;
";
$file_input = [
[$data, NULL, NULL, SQLSRV_SQLTYPE_VARBINARY],
];
$stmt = sqlsrv_prepare($conn, $sql, $file_input);
if(sqlsrv_execute($stmt) === false){
die(print_r(sqlsrv_errors(), true));
}
其中$data
字段馈入数据库中存储过程中的varbinary列。
我尝试的另一种方法涉及将$data
varchar转换为数据库中的varbinary(max)字段,但是无论哪种方式,我都会得到损坏的图像。
所以我的问题是... file_get_contents弄乱了我的二进制数据吗?我将如何读取图像文件并将其上传到数据库以供以后检索?