我在SQL Server 2012数据库中有一个数据库字段。它们可以包含PDF,WORD,Excel或图像文件。我的Blob字段类型是varbinary(max)。我的代码使用ColdFusion工作正常,但我试图将它转换为PHP,它似乎没有工作。以下是我正在使用的代码。有人能告诉我我做错了什么吗? 下面的示例仅适用于word文档,当Word应用程序启动时,我会得到一个"文件转换"对话框要求我选择使文档可读的编码,这些编码没有任何区别。预览窗口显示了一堆垃圾。
<?PHP
$aserverName = "SQ-ENT12-D01\Dev";
$aconnectionInfo = array( "Database"=>"Event_Registration", "UID"=>$uid, "PWD"=>$pwd, "CharacterSet"=>"UTF-8");
$aconn = sqlsrv_connect( $aserverName, $aconnectionInfo);
// Get the record where the binary data is
$GetBlobSQL = "select * from Congress where Congress_ID = 102";
$GetBlob = sqlsrv_query($aconn, $GetBlobSQL, array(), array('Scrollable' => 'buffered'));
$GetBlobRecordCount = sqlsrv_num_rows($GetBlob);
$brec = sqlsrv_fetch_array( $GetBlob, SQLSRV_FETCH_ASSOC, SQLSRV_SCROLL_ABSOLUTE, 0);
$WhatFile = ($brec['Document_Agenda']);
$WhatBlob = ($brec['AD_Agenda']);
$MyExt = substr($WhatFile, -4);
$WhatExt = strtolower($MyExt);
header('Content-type: application/ms-word');
header('Content-Disposition: attachment; filename="'.$WhatFile.'"');
echo $WhatBlob;
?>
我知道数据库中的文件或数据没有损坏,因为我的原始ColdFusion代码可以很好地检索和显示数据。
答案 0 :(得分:0)
尝试从"CharacterSet"=>"UTF-8"
删除$aconnectionInfo
。您可能会混淆数据库并导致不需要或不需要的转换。