php如何将图片以二进制形式保存到sqlserver2005,并将保存的二进制形式的图片输出。
先说明一下我的环境:
php+apache+sqlserver2005
按照微软官方的例子做下来,图片是可以以二进制的形式保存在数据库中了。但是读取出来后图片没有显示。
微软官网实例地址:
http://msdn.microsoft.com/zh-cn/library/cc296196%28v=SQL.90%29.aspx现在我怀疑是不是我保存的二进制有问题
先说明一下我的环境:
php+apache+sqlserver2005
按照微软官方的例子做下来,图片是可以以二进制的形式保存在数据库中了。但是读取出来后图片没有显示。
微软官网实例地址:
http://msdn.microsoft.com/zh-cn/library/cc296196%28v=SQL.90%29.aspx现在我怀疑是不是我保存的二进制有问题
<?php
/*=====================================================================
This file is part of a Microsoft SQL Server Shared Source Application.
Copyright (C) Microsoft Corporation. All rights reserved.
THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
======================================================= */$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");/* Connect using Windows Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}/* Get the product picture for a given product ID. */
$tsql = "SELECT LargePhoto
FROM Production.ProductPhoto AS p
JOIN Production.ProductProductPhoto AS q
ON p.ProductPhotoID = q.ProductPhotoID
WHERE ProductID = ?";$params = array($_REQUEST['productId']);/* Execute the query. */
$stmt = sqlsrv_query($conn, $tsql, $params);
if( $stmt === false )
{
echo "Error in statement execution.</br>";
die( print_r( sqlsrv_errors(), true));
}/* Retrieve the image as a binary stream. */
if ( sqlsrv_fetch( $stmt ) )
{
$image = sqlsrv_get_field( $stmt, 0,
SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY));
fpassthru($image);
}
else
{
echo "Error in retrieving data.</br>";
die(print_r( sqlsrv_errors(), true));
}/* Free the statement and connectin resources. */
sqlsrv_free_stmt( $stmt );
sqlsrv_close( $conn );
?>
fpassthru($image);我本机输出来图片是空的。