php如何将图片以二进制形式保存到sqlserver2005,并将保存的二进制形式的图片输出。
先说明一下我的环境:
php+apache+sqlserver2005
按照微软官方的例子做下来,图片是可以以二进制的形式保存在数据库中了。但是读取出来后图片没有显示。
微软官网实例地址:
http://msdn.microsoft.com/zh-cn/library/cc296196%28v=SQL.90%29.aspx现在我怀疑是不是我保存的二进制有问题

解决方案 »

  1.   

    弄错了,是fopen('file_path', 'rb');
      

  2.   

    不行,不是这个就能搞定的官网的例子:
    <?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);我本机输出来图片是空的。
      

  3.   

    不建议。曾经将图片保存到了MYSQL。