我都用 binary 的
保存二进制源文件

解决方案 »

  1.   

    addslashes改成base64_encode
    image字段改成text字段
      

  2.   

    $filename = "top.gif";
    $fp = fopen($filename,"rb"); // 注意WIN下要用B属性
    $picture = fread($fp,filesize($filename));
    $data = addslashes($picture);
    //or:
    //$data = base64_encode($picture);
    $sql = odbc_exec($sd,"update company set sb = '$data' where phone = '$qt_id'");
      

  3.   

    那字段是image 还是 text
      

  4.   

    那和我的这个 $imagefile = "http://localhost/php/pic/logo.gif";
    $fp = fopen($imagefile,"r");
    if($fp){
    $data = addslashes(fread($fp,6000));
    //echo $data;
    }
      
       $sql = odbc_exec($sd,"update company set sb = '$data' where phone = '$qt_id'");是不是差不多啊
      

  5.   

    针对你的代码增加2点:1、若在WIN下fopen要加b属性的,这个手册里有专门说明的。
    2、addslashes(fread($fp,6000)); 这里有可能文件大于6000呢???
      

  6.   

    先用image+addslashes试试,若不行就改成text+base64_encode吧。
      

  7.   

    $imagefile = "http://localhost/php/pic/logo.gif";
    $fp = fopen($imagefile,"r");
    我把图片固定了我在win下是不是要加fopne($filename,"rb")
    两种方法都不得不行啊你能不能在自已的机器上试一试啊Warning: SQL error: [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误, SQL state 07001 in SQLExecDirect in
      

  8.   

    你确信odbc已经连上了吗?
      

  9.   


    //前面的代码要求:
    //(0)确保top.gif跟这个脚本文件同目录下
    //(1)确保odbc已经连接上了数据库
    //(2)确定数据库的字段名字正确
    //(3)确保$qt_id已经取得了预想的结果$filename = "top.gif";
    $fp = fopen($filename,"rb");
    $data = base64_encode(fread($fp,filesize($filename));
    $sql = odbc_exec($sd,"update company set sb = '$data' where phone = '$qt_id'");
    ...如果这样的话,我想应该没问题了
      

  10.   

    sb的字段是什么啊 image or text
    还有一个问题FOPEN是不是一定要绝对路径的啊我用相对路径读出来的文件要减少的啊
      

  11.   

    我确定,我做过类似的程序,不过不是sqlserver中,实在抱歉!
    mysql中,字段用longblob,longtext都可以,我确信可以,,
    我们做的商业软件,运行稳定..
      

  12.   

    我确定,我做过类似的程序,不过不是sqlserver中,实在抱歉!
    mysql中,字段用longblob,longtext都可以,我确信可以,,
    我们做的商业软件,运行稳定..
      

  13.   

    可以用想对路径,但是确保有读文件的权限即可
    建议你用rb方式打开文件
    建议用base64_encode编码
    从数据库取出字段再base64_decode解码即可
      

  14.   

    mysql我也试过了可以的但sql就是不行,看你这么好交个朋友保持联系
    有联系方式的吗,msn qq email
      

  15.   

    那字段是image 还是 text
      

  16.   

    但我在WIN2000下不能用相对路径读文件要减少
      

  17.   

    只要确保用rb方式读取文件
    我想没有问题的
    我用网易泡泡(popo.163.com)
    [email protected]
      

  18.   

    字段类型,我确实拿不定了,我也很想帮你,可是我这里没有sqlserver的环境了
    安装很罗嗦,我有这么懒,哎。你自己尝试一下吧,应该image方式可以保存吧。
    或许image有字节限制?呵呵,用个小图片试验一下
      

  19.   

    我试了好像GIF的可以的不过显示出来的图片文件是-1,这是怎么回事啊
      

  20.   

    WIN下用rb读取文件就不会出现你所说的文件减少的问题了,
    如果用base64_encode,那么字段要用text.
    如果用addslashes,那么字段用image
      

  21.   

    base64_encode和text可以,但显示的图片的属性是-1,而在于addslashes 和 image 还是不行,错误如下
    Warning: SQL error: [Microsoft][ODBC SQL Server Driver]语法错误或访问冲突, SQL state 37000 in SQLExecDirect in
      

  22.   

    <?php
    // 本代码已调试成功,如需转载,请注明原作者(PHPTEAM)。
    // 由于WIN下读取二进制文件必须加"b"属性,否则会出现文件减少的问题。
    // 若加了"b"属性,还出现文件减少的情况,请修改php.ini的相关配置:
    // odbc.defaultlrl = 40960000  //默认为4096
    // 字段为text,采用base64_encode编码
    $filename = "test.jpg";
    $fp = fopen($filename,"rb");
    $picture = fread($fp,filesize($filename));
    $picture = base64_encode($picture);
    fclose($fp);// 操作ODBC
    $conn = odbc_connect("test","test","test");
    $query = "INSERT INTO test (filename,picture) VALUES ('$filename','$picture')";
    $result = odbc_exec($conn, $query);
    $query="select @@IDENTITY as id";
    $result = odbc_exec($conn, $query);
    $id = @odbc_result($result, "id");
    // 这段为读取内容
    $query = "SELECT picture FROM test WHERE id='$id'";
    $result = odbc_exec($conn, $query);
    $picture = odbc_result($result, "picture");
    $data = base64_decode($picture);header("Content-type: image/jpeg");
    echo $data;
    ?>
      

  23.   

    哎,下午我还是装个sql server吧,共同研究一下。